Cod sursa(job #20501)

Utilizator portocalaDiculescu Elena Alexandra portocala Data 21 februarie 2007 17:22:17
Problema Triplete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream.h>
#define max(x,y) ((x)>(y) ? (x):(y))
unsigned long mat[4096][128],mask,t;
unsigned int v[65536][2],m,n;
int main()
{ifstream f("triplete.in");
ofstream g("triplete.out");
unsigned int i,j,k,x;
f>>n>>m;
for(i=1;i<=m;i++)
 {f>>v[i][0]>>v[i][1];
  mat[v[i][0]-1][(v[i][1]-1)/32]+=1<<((v[i][1]-1)%32);
  mat[v[i][1]-1][(v[i][0]-1)/32]+=1<<((v[i][0]-1)%32);
 }
f.close();
for(i=1;i<=m;i++)
 {x=max(v[i][0],v[i][1]);
  j=x/32;
  for(k=(x%32);k<32;k++)
   {mask=1<<k;
    if((mask&mat[v[i][0]-1][j])&&(mask&mat[v[i][1]-1][j]))t++;
   }
  j++;
  while(j<=n/32)
   {for(k=0;k<32;k++)
     {mask=1<<k;
      if((mask&mat[v[i][0]-1][j])&&(mask&mat[v[i][1]-1][j]))t++;
     }
   }
 }
g<<t<<'\n';
g.close();
return 0;
}