Cod sursa(job #132997)

Utilizator razvi9Jurca Razvan razvi9 Data 7 februarie 2008 11:16:36
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
int n,m,i,j,x,y,b[65537][2];
vector<int> a[4097];
vector<int>::iterator it1,it2,end1,end2;
long long nr;
int main()
{
	ifstream fin("triplete.in");
	ofstream fout("triplete.out");
	fin>>n>>m;
	for(i=1;i<=m;i++){
		fin>>x>>y;
		a[x].push_back(y);
		a[y].push_back(x);
		b[i][0]=x;b[i][1]=y;}
	for(i=1;i<=n;i++)
		sort(a[i].begin(),a[i].end());
	for(i=1;i<=m;i++){
		x=b[i][0];
		y=b[i][1];
		end1=a[x].end();
		it1=a[x].begin();
		end2=a[y].end();
		it2=a[y].begin();
		while(it1!=end1 && it2!=end2){
			if(it2!=end2)
				while(it1!=end1 && *it1 < *it2) it1++;
			if(it1!=end1)
				while(it2!=end2 && *it2 < *it1) it2++;
			if(it1!=end1 && it2!=end2)
				if(*it1==*it2) {nr++;it1++;it2++;}}}
	fout<<nr/3;
	fclose(stdout);
	return 0;}