Pagini recente » Cod sursa (job #634176) | Cod sursa (job #1257226) | Cod sursa (job #1111757) | Cod sursa (job #963599) | Cod sursa (job #153222)
Cod sursa(job #153222)
#include<stdio.h>
int n, m, pt[16], x1, x2, x, y, nr, i, j, k, use[4095];
unsigned char v[4095][513], z;
inline int max(int a, int b){
if (a > b)
return a;
return b;
}
int main()
{
freopen("triplete.in", "rt", stdin);
freopen("triplete.out", "wt", stdout);
pt[0] = 1;
for (i = 1; i <= 15; i ++)
pt[i] = 2*pt[i-1];
scanf("%d%d", &n, &m);
for (i = 1; i <= m; i ++){
scanf("%d%d", &x, &y);
x1 = (y-1) / 8;
x2 = (y-1) % 8;
v[x][x1] |= pt[x2];
use[x] = max(use[x], x1);
x1 = (x-1) / 8;
x2 = (x-1) % 8;
v[y][x1] |= pt[x2];
use[y] = max(use[y], x1);
}
for (i = 1; i < n; i ++)
for (j = i+1; j <= n; j ++){
int tr = max(use[i], use[j]);
for (k = 0; k <= tr; k ++){
z = v[i][k] & v[j][k];
while (z){
z &= (z-1);
nr ++;
}
}
}
printf("%d\n", nr / 4);
return 0;
}