Cod sursa(job #462941)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 14 iunie 2010 11:17:37
Problema Triplete Scor 100
Compilator cpp Status done
Runda biti2 Marime 0.65 kb
#include<stdio.h>
#include<string.h>
#define biti 16

char nrb[(1<<biti)+7];
int n,m,nrsol;
struct per
{
	int x,y;
};
per q[70004];
int v[5007][405];

int main ()
{
	int i,j,v1,v2;
	freopen("triplete.in","r",stdin);
	freopen("triplete.out","w",stdout);
	scanf("%d%d",&n,&m);
    for(i=1;i<=(1<<16);i++)
		nrb[i]=nrb[i/2]+(i&1);
	for(i=1;i<=m;i++)
	{
		scanf("%d%d",&q[i].x,&q[i].y);	
		v1=q[i].x;v2=q[i].y;
        v[v1][v2/biti]+=(1<<(v2%biti));
        v[v2][v1/biti]+=(1<<(v1%biti));
	}
	for(i=1;i<=m;i++)
		for(j=0;j<=n/biti;j++)
            nrsol+=nrb[v[q[i].x][j]&v[q[i].y][j]];
    printf("%d\n",nrsol/3);
	return 0;
}