Pagini recente » Cod sursa (job #3275923) | Cod sursa (job #3278982) | Cod sursa (job #916208) | Cod sursa (job #3243394) | Cod sursa (job #8605)
Cod sursa(job #8605)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
using namespace std;
#define FOR(i, a, b) for (i = (a); i <= (b); i ++)
#define REP(i, n) for (i = 0; i < (n); i ++)
#define PB push_back
#define NMAX 4096
#define MMAX 65536
int N, M, i, j, k;
int a[MMAX], b[MMAX], nr[65536];
unsigned f[NMAX][128];
inline int nb(unsigned x)
{
return nr[x & 65535] + nr[x >> 16];
}
int main(void)
{
freopen("triplete.in", "r", stdin);
freopen("triplete.out", "w", stdout);
nr[0] = 0;
FOR(i, 1, 65535) nr[i] = nr[i >> 1] + (i & 1);
memset(f, 0, sizeof(f));
scanf("%d %d", &N, &M);
REP(k, M)
{
scanf("%d %d", &i, &j);
f[i][j/32] |= (1 << (j%32));
f[j][i/32] |= (1 << (i%32));
a[k] = i, b[k] = j;
}
int Ans = 0;
REP(i, M) FOR(k, 0, 127)
Ans += nb(f[a[i]][k] & f[b[i]][k]);
printf("%d\n", Ans/3);
return 0;
}