Cod sursa(job #589021)

Utilizator theocmtAxenie Theodor theocmt Data 10 mai 2011 17:16:27
Problema Triplete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>

unsigned int a[4100][4100];
int n,m,x,y,b,s;

int nrbiti(int n)
{
	int nr=0;
	while (n!=0)
	{
		nr++;
		n&=(n-1);
	}
	return nr;
}

int main()
{
	int i,j;
	freopen("triplete.in","r",stdin);
	freopen("triplete.out","w",stdout);
	scanf("%d%d",&n,&m);
	for (i=1; i<=m; ++i)
	{
		scanf("%d%d",&x,&y);
		a[x][y>>5] |= (1<<(y&(31)));
		a[y][x>>5] |= (1<<(x&(31)));
	}
	
	/*
	for (i=1; i<=n; ++i)
	{
		for (j=1; j<=n; j++)
			if ( (a[i][j>>5] & (1<<(j&31))) !=0 )
				printf("1 ");
			else
				printf("0 ");
		printf("\n");
	}
	*/
	
	for (x=1; x<=n; ++x)
		for (y=x+1; y<=n; ++y)
		{
			for (j=0; j<=n>>5; ++j)
			{
				b=(a[x][j] & a[y][j]);
				s+=nrbiti(b);
			}
		}
	printf("%d",s/3);
	return 0;
}