Cod sursa(job #1167604)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 5 aprilie 2014 15:41:26
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <iostream>
#include <fstream>
long long int array[4096][64];
int nr_biti(long long int x)
{
	int count = 0;
	while(x)
	{
		x=x&(x-1);
		count++;
	}
	return count;
}
int main ()
{
	std::ifstream fin("triplete.in");
	std::ofstream fout("triplete.out");
	int n, m;
	int a, b;

	fin>>n>>m;
		
	for(int i=0;i<m;i++)
	{
		fin>>a>>b;		
		a--;b--;
		array[a][b>>6] |= 1LL<<(b%64);
		array[b][a>>6] |= 1LL<<(a%64);
	}

	int count=0; 

	for(int i=0;i<n;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			if(array[i][j>>6]&(1LL<<(j%64)))								
			{
				for(int k=0;k<64;k++)
				{
					count+=nr_biti(array[i][k] & array[j][k]);
				}					
			}	
		}
	}		

	fout<<count/3;

	return 0;
}