Pagini recente » Cod sursa (job #1066568) | Cod sursa (job #2057985) | Cod sursa (job #2006184) | Istoria paginii utilizator/andradacojocaru | Cod sursa (job #206031)
Cod sursa(job #206031)
#include<stdio.h>
#include<string.h>
long long nv,m,i,j,aa,bb,a[4096][128],f[65536],s[65536],
sol,col[4096],mask[4096],nb[65536],NB(long long nr);
void readd(),swap(),solve();
int main()
{ readd();
solve();
printf("%lld",sol);
return 0;
}
void readd()
{
freopen("triplete.in","r",stdin);
freopen("triplete.out","w",stdout);
scanf("%lld%lld",&nv,&m);
for(i=0;i<nv;i++){col[i]=i/32;mask[i]=i%32;mask[i]=1<<mask[i];}
jmax=col[nv-1];
for(i=1;i<65536;i++) nb[i]=nb[i>>1]+(i&1);
for(i=0;i<m;i++)
{ scanf("%lld%lld",&aa,&bb);aa--;bb--;
if(aa>bb)swap();
a[aa][col[bb]]+=mask[bb];
f[i]=aa;s[i]=bb;
}
}
void solve()
{
for(i=0;i<m;i++)
for(j=0;j<=jmax;j++)
sol+=NB(a[f[i]][j]&a[s[i]][j]);
}
long long NB(long long nr)
{ long long biti=0;
while(nr){biti+=nb[nr&65535];nr/=65536;}
return biti;
}
void swap()
{ long long aux=aa;aa=bb;bb=aux;}