Pagini recente » Cod sursa (job #860568) | Cod sursa (job #2844342) | Cod sursa (job #344067) | Cod sursa (job #922512) | Cod sursa (job #16686)
Cod sursa(job #16686)
# include <stdio.h>
# define maxn 4198
# define maxm 61536
# define isize 30
# define _fin "triplete.in"
# define _fout "triplete.out"
int ad[maxn][maxn / isize];
int mc[maxm][2], m, n, sol;
int addv(int x, int y)
{
int list = y / isize, ord = y % isize;
ad[ x ][ list ] |= ( 1 << ord );
}
int bits1(int x)
{
int i, c, ret=0;
for (i=1, c=0; c<=isize && i<=x; i<<=1, c++)
ret += !!( x & i );
return ret;
}
void readf()
{
freopen(_fin, "r", stdin);
int i, x, y;
for (scanf("%d %d", &n, &m), i=0; i<m; i++)
scanf("%d %d", &x, &y), addv(x, y), addv(y, x), mc[i][0]=x, mc[i][1]=y;
}
void solve()
{
int i, j;
for (i=0; i<m; i++)
for (j=0; j<=n/isize; j++)
sol += bits1( ad[ mc[i][0] ][j] & ad[ mc[i][1] ][j] );
sol /= 3;
}
void writef()
{
freopen(_fout, "w", stdout);
printf("%d\n", sol);
}
int main()
{
readf();
solve();
writef();
return 0;
}