Pagini recente » Cod sursa (job #478600) | Cod sursa (job #270561) | Clasament preONI 2007, Clasa a 9-a si gimnaziu | Cod sursa (job #2508825) | Cod sursa (job #1442184)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define Nmax 4096
#define Mmax 65539
#define B 30
using namespace std;
int n, m, i, j, a[Nmax][Nmax / B];
int sol;
struct nod
{
int x;
int y;
} v[Mmax];
void citire()
{
scanf("%d %d", &n, &m);
for (i = 1; i <= m ; ++ i)
{
scanf("%d %d", &v[i].x, &v[i].y);
a[v[i].x][v[i].y / B] += (1 << (v[i].y % B)) ;
a[v[i].y][v[i].x / B] += (1 << (v[i].x % B)) ;
}
}
inline int nb1(int n)
{
int nb = 0;
if (n == 0) return 0;
do
{
n &= n - 1;
++ nb;
} while (n);
return nb;
}
int main()
{
freopen("triplete.in", "r", stdin);
freopen("triplete.out", "w", stdout);
citire();
for (i = 1; i <= m ; ++ i)
{
for (j = 0; j <= n / B; ++ j)
sol += nb1(a[v[i].x][j] & a[v[i].y][j]);
}
printf("%d", sol / 3);
return 0;
}