Pagini recente » Cod sursa (job #2824284) | Cod sursa (job #291302) | Cod sursa (job #3173207) | Cod sursa (job #843420) | Cod sursa (job #1459293)
/// Cod cules si modificat
#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)) ;
//a[v[i].y][v[i].x / B] += (1 << (v[i].x % 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;
}