Pagini recente » Cod sursa (job #520029) | Cod sursa (job #284239) | Monitorul de evaluare | Cod sursa (job #2017150) | Cod sursa (job #218221)
Cod sursa(job #218221)
#include<stdio.h>
#define ll long long
int n,m,unde;
ll r=0;
unsigned char a[4098][515];
void citire()
{
int x,y;
for(int i=0; i<m; i++)
{
scanf("%d%d",&x,&y);
a[x][y>>3]|=1<<(y&7);
a[y][x>>3]|=1<<(x&7);
}
unde=(n>>3)+1;
if(unde&7)
unde++;
}
long long nrb(unsigned char x)
{
int k=0;
while(x)
{
x&=x-1;
k++;
}
return (ll)k;
}
void vezi(int x,int y,int z)
{
unsigned char aux;
for(int i=0; i<unde; i++)
{
aux=a[x][i]&a[y][i]&a[z][i];
r+=nrb(aux);
}
}
int main()
{
freopen("triplete.in","r",stdin);
freopen("triplete.out","w",stdout);
scanf("%d%d",&n,&m);
citire();
int i,j,k;
for(i=1; i<=n; i++)
{
for(j=i+1; j<=n; j++)
{
for(k=j+1; k<=n; k++)
vezi(i,j,k);
}
}
printf("%lld\n",r);
return 0;
}