Pagini recente » Cod sursa (job #269970) | Cod sursa (job #1265356) | Cod sursa (job #2009467) | Cod sursa (job #2219962) | Cod sursa (job #21771)
Cod sursa(job #21771)
#include <fstream.h>
#define max(x,y) ((x)>(y) ? (x):(y))
#define dim1 4096
#define dim2 128
#define dim3 65537
unsigned long a[dim1][dim2],n,m;
int mat[dim3][2];
int main()
{ifstream f("triplete.in");
ofstream g("triplete.out");
unsigned long i,j,k,p,n2,p2,var;
//unsigned long c;
long long c;
f>>n>>m;
for(i=1;i<=m;i++)
{f>>mat[i][0]>>mat[i][1];
a[mat[i][0]-1][(mat[i][1]-1)/32]+=1<<((mat[i][1]-1)%32);
a[mat[i][1]-1][(mat[i][0]-1)/32]+=1<<((mat[i][0]-1)%32);
}
f.close();
n2=n/32;c=0;
for(i=1;i<=m;i++)
{p=max((mat[i][0]-1),(mat[i][1]-1));
p2=(p+1)/32;p=1<<((p+1)%32);
var=1;var=var<<31;
for(j=p;j<var;j=j<<1)
if((a[mat[i][0]-1][p2]&j)&&(a[mat[i][1]-1][p2]&j)) c++;
if((a[mat[i][0]-1][p2]&j)&&(a[mat[i][1]-1][p2]&j)) c++;
for(j=p2+1;j<=n2;j++)
{var=1;var=var<<31;
for(k=1;k<var;k=k<<1)
if((a[mat[i][0]-1][j]&k)&&(a[mat[i][1]-1][j]&k)) c++;
if((a[mat[i][0]-1][j]&k)&&(a[mat[i][1]-1][j]&k)) c++;
}
}
g<<c<<'\n';
g.close();
return 0;
}