Pagini recente » Cod sursa (job #2443422) | Cod sursa (job #371436) | Cod sursa (job #1852834) | Cod sursa (job #1585810) | Cod sursa (job #11200)
Cod sursa(job #11200)
#include <stdio.h>
#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define nmax 4096
#define mmax 65536
#define g(x) ((x)>>5)
#define f(x) ((x)&31)
typedef unsigned int lint;
lint A[nmax][g(nmax)];
int B[mmax][2],n,m,sol;
void Add(int i,int j)
{
A[i][g(j)]|=((lint)(1))<<((lint)f(j));
}
int nbit(lint x)
{
if(!x)
return 0;
return 1+nbit(x&(x-1));
}
int main()
{
int i,j,ii;
freopen("triplete.in","r",stdin);
freopen("triplete.out","w",stdout);
scanf("%d %d",&n,&m);
FOR(ii,0,m)
{
scanf("%d %d",&i,&j);i--,j--;
B[ii][0]=i,B[ii][1]=j;
Add(i,j),Add(j,i);
}
FOR(ii,0,m)
FOR(i,0,g(n-1)+1)
sol+=nbit(A[B[ii][0]][i]&A[B[ii][1]][i]);
printf("%d\n",sol/3);
return 0;
}