Cod sursa(job #324145)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 14 iunie 2009 18:32:42
Problema Triplete Scor 100
Compilator cpp Status done
Runda biti Marime 0.58 kb
#include<stdio.h>
long n,m,i,j,a[4100][130],x[65555],y[65555];
long long s;
long nr(long s)
{long n=0;
 while(s)
  {s&=(s-1);
   ++n;}
 return n;
}
int main()
{
 freopen("triplete.in","r",stdin);
 freopen("triplete.out","w",stdout);
 scanf("%ld%ld",&n,&m);
 for(i=1;i<=m;++i)
    {scanf("%ld%ld",&x[i],&y[i]);
     --y[i];
     a[x[i]][y[i]>>5]|=(1<<(y[i]&31));
     ++y[i];
     --x[i];
     a[y[i]][x[i]>>5]|=(1<<(x[i]&31));
     ++x[i];}
 for(i=1;i<=m;++i)
    for(j=0;j<=n>>5;++j)
       s+=(long long)nr(a[x[i]][j]&a[y[i]][j]);
 printf("%lld\n",s/3);
 return 0;
}