Cod sursa(job #178679)

Utilizator katakunaCazacu Alexandru katakuna Data 14 aprilie 2008 21:57:20
Problema Triplete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<stdio.h>

struct asd {long int a,b;}M[68000];

long int ve[4500][4500/16];
char cnt[50000];

long int q,x,y,nr,i,j,a,b,n,m;

int main(){


FILE *f=fopen("triplete.in","r");

fscanf(f,"%ld %ld",&n,&m);


 for(i=1;i<=m;i++){
 fscanf(f,"%ld %ld",&a,&b);
 M[i].a=a;
 M[i].b=b;

 ve[a][(b/16)]|=(1<<(b%16));
 ve[b][(a/16)]|=(1<<(a%16));
 }

fclose(f);

for(i = 1; i < 40000; i++)
    cnt[i] = cnt[i>>1]+(i&1);


 for(i=1;i<=m;i++){
 x=M[i].a;
 y=M[i].b;

   if(x>y)
   q=x;

   else
   q=y;

    for(j=0;j<=n/16;j++){
    a=ve[x][j];
    b=ve[y][j];

    b=b>>q;
    a=a>>q;
    a=a&b;

    nr+=cnt[a];

    }

 }

FILE *g=fopen("triplete.out","w");
fprintf(g,"%d",nr);
fclose(g);

return 0;
}