Pagini recente » Cod sursa (job #1057674) | Cod sursa (job #1817914) | Cod sursa (job #811748) | Cod sursa (job #254884) | Cod sursa (job #206028)
Cod sursa(job #206028)
#include<stdio.h>
#include<string.h>
long long nv,m,i,j,aa,bb,a[4096][128],f[65536],s[65536],
sol,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=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][bb>>5]|=(1<<(bb&31));
f[i]=aa;s[i]=bb;
}
}
void solve()
{
for(i=0;i<m;i++)
for(j=0;j<128;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;}