Cod sursa(job #219879)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 8 noiembrie 2008 15:42:14
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
#define M 4200
unsigned int a[M][M/32+1];
unsigned int nrb(int x)  
{  
    unsigned int nr=0;  
    while(x)  
    {  
        x&=x-1;  
        ++nr;  
    }  
    return nr;  
}  
void citire()
{
	unsigned int n,m;
	unsigned int x,y;
	scanf("%d%d",&n,&m);
	while (m--)
	{
		scanf("%u%u",&x,&y);
		if (x>y)
		{
			unsigned int a=x;
			x=y;
			y=a;
		}
		--x;
		--y;
		a[x][y>>5]|=1<<(y&31);
	}
	unsigned int i,j,k,rez=0;
	for (i=0; i<n-2;++i)
		for (j=i+1; j<n-1;++j)
			if (a[i][j>>5]&(1<<(j&31)))
				for (k=0; k<=(n>>5); ++k)
					rez+=nrb(a[i][k]&a[j][k]);
	printf("%d",rez);

}
int main()
{
	freopen("triplete.in","r",stdin);
	freopen("triplete.out","w",stdout);
	citire();
}