Cod sursa(job #324099)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 14 iunie 2009 18:17:53
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
int n,m;
int v[4100][132];

void read()
{
	freopen("triplete.in","r",stdin);
	freopen("triplete.out","w",stdout);
	scanf("%d%d",&n,&m);
	int i,x,y;
	for(i=1;i<=m;i++)
	{
		scanf("%d%d",&x,&y);
		v[x][y/32+1]|=(1<<((y&31)-1));
		v[y][x/32+1]|=(1<<((x&31)-1));
	}
}

void rez()
{
	int i,j,k,lim=n/32+1,x,nr1,nr=0;
	for(i=1;i<=n;i++)
		for(j=i+1;j<=n;j++)
			if((v[i][j/32+1]&(1<<((j&31)-1))))
			{
				for(k=1;k<=lim;k++)
				{
					nr1=0;
					x=v[i][k]&v[j][k];
					while(x)
					{
						nr1++;
						x=x&(x-1);
					}
					nr+=nr1;
				}
			}
	printf("%d\n",nr/3);
}

int main()
{
	read();
	rez();
	return 0;
}