Pagini recente » Cod sursa (job #701023) | Cod sursa (job #1319567) | Cod sursa (job #1337860) | Cod sursa (job #2643484) | Cod sursa (job #1196994)
#include <cstdio>
#define Nmax 4100
#define Mmax 65600
using namespace std;
unsigned int a[Nmax][Nmax/32],st[Mmax],dr[Mmax];
inline int NrBiti(unsigned int x)
{
int cnt=0;
for(;x;x=(x&(x-1)),++cnt);
return cnt;
}
int main()
{
int N,M,nr,i,j,x;
long long sol=0;
freopen ("triplete.in","r",stdin);
freopen ("triplete.out","w",stdout);
scanf("%d%d", &N,&M);
nr=N/32+1;
if(N%32==0)
--nr;
for(i=1;i<=M;++i)
{
scanf("%d%d", &st[i],&dr[i]);
x=dr[i]/32+1;
if(dr[i]%32==0)
--x;
a[st[i]][x]+=(1<<(32*x-dr[i]));
x=st[i]/32+1;
if(st[i]%32==0)
--x;
a[dr[i]][x]+=(1<<(32*x-st[i]));
}
for(i=1;i<=M;++i)
for(j=1;j<=nr;++j)
sol+=NrBiti(a[st[i]][j]&a[dr[i]][j]);
printf("%lld\n", sol/3);
return 0;
}