Pagini recente » Cod sursa (job #3199800) | Cod sursa (job #3239109) | Cod sursa (job #2356413) | Cod sursa (job #1857184) | Cod sursa (job #40526)
Cod sursa(job #40526)
#include <stdio.h>
#include <iostream>
using namespace std;
FILE *in = fopen("triplete.in", "r"), *out = fopen("triplete.out", "w");
int n, m;
void rezbiti()
{
fscanf(in, "%d %d", &n, &m);
unsigned int **a = new unsigned int*[4096];
for ( int i = 0; i < 4096; ++i )
a[i] = new unsigned int[128], memset(a[i], 0, 128);
struct perechi
{
unsigned int a, b;
};
perechi *b = new perechi[65537];
for ( int i = 0; i < m; ++i )
{
//in >> b[i].a >> b[i].b;
fscanf(in, "%d %d", &b[i].a, &b[i].b);
b[i].a -= 1;
b[i].b -= 1;
a[b[i].a][b[i].b/32] |= (1<<(b[i].b%32));
a[b[i].b][b[i].a/32] |= (1<<(b[i].a%32));
}
unsigned int cnt = 0;
int s = n/32+1;
for ( int i = 0; i != m; ++i )
{
for ( int j = 0; j != s; ++j )
{
unsigned int t = a[b[i].a][j] & a[b[i].b][j];
//for ( int biti = 0; biti != 32; ++biti )
// cnt += (t & (1<<biti)) != 0;
while ( t )
{
++cnt;
t &= t-1;
}
}
}
fprintf(out, "%u\n", cnt/3);
}
int main()
{
//read();
//printmat();
rezbiti();
return 0;
}