Pagini recente » Cod sursa (job #11170) | Cod sursa (job #2045739) | Cod sursa (job #1490164) | Cod sursa (job #2449976) | Cod sursa (job #21491)
Cod sursa(job #21491)
#include<iostream.h>
#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];//,lung,c[12];
/*void adun()
{int i,t;
c[0]=c[0]+1;t=c[0]/10;c[0]=c[0]%10;
i=1;
while(t) {c[i]=c[i]+t;t=c[i]/10;c[i]=c[i]%10;i++;}
if((i-1)>lung) lung=i-1;
} */
int main()
{ifstream f("triplete.in");
ofstream g("triplete.out");
unsigned long i,j,k,p,n2,c,p2,var;
//int cont;
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();
/*for(i=0;i<=n;i++)
for(j=0;j<=(n/32);j++) cout<<a[i][j]<<" ";*/
n2=n/32;c=0;
/*for(i=0;i<12;i++) c[i]=0;
lung=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++;
}
}
//for(cont=lung;cont>=0;cont--) g<<c[cont];
//g<<'\n';
g<<c<<'\n';
g.close();
return 0;
}