Pagini recente » Cod sursa (job #699613) | Cod sursa (job #1624565) | Cod sursa (job #311663) | Cod sursa (job #1352258) | Cod sursa (job #1459349)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define Nmax 4100
#define Mmax 66000
#define B 32
using namespace std;
int n, m, i, j;
int 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);
if (v[i].x > v[i].y)
swap(v[i].x, v[i].y);
a[v[i].x][v[i].y / B] += (1 << (v[i].y % B)) ;
}
}
inline int nb1(int n)
{
int nb = 0;
while (n)
{
++ nb;
n &= (n - 1);
}
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 );
return 0;
}