Pagini recente » Cod sursa (job #936916) | Istoria paginii runda/eusebiu_oji_2012_cls9/clasament | Cod sursa (job #1651267) | Cod sursa (job #1693149) | Cod sursa (job #533922)
Cod sursa(job #533922)
#include<cstdio>
int max=1<<22;
int n,nr1[4000000],L[4100][250];
long long sol;
void read()
{
freopen("triplete.in","r",stdin);
freopen("triplete.out","w",stdout);
int m,x,y;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
L[x][y/21]=(L[x][y/21]|(1<<(y%21)));
L[y][x/21]=(L[y][x/21]|(1<<(x%21)));
}
}
void init()
{
for(int i=1;i<max;i++)
nr1[i]=nr1[i>>1]+(i&1);
}
void solve()
{
for(int i=1;i<=n;i++)
for(int j=0;j<=n/21;j++)
for(int k=1,p=0;k<max;k<<=1,p++)
if(L[i][j]&k)
for(int t=0;t<=n/21;t++)
sol+=(long long)nr1[L[i][t]&L[p+j*21][t]];
}
int main()
{
read();
init();
solve();
printf("%lld",sol/6);
return 0;
}