Cod sursa(job #212185)

Utilizator ProtomanAndrei Purice Protoman Data 4 octombrie 2008 16:00:59
Problema Triplete Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>
#include <algorithm>
#define lim_bz2 255
#define mx 65536

using namespace std;

int x[mx + 4], y[mx + 4];
long v[4100][4100 >> 3];
int nr_biti[lim_bz2 + 4];
int n, m, rez;

int main()
{
	freopen("triplete.in","r",stdin);
	freopen("triplete.out","w",stdout);
	scanf("%ld %ld", &n, &m);
	for (int i = 1; i <= lim_bz2; i++)
		nr_biti[i] = nr_biti[i >> 1] + (i & 1);
	for (int i = 1; i <= m; i++)
	{
		scanf("%ld %ld", &x[i], &y[i]);
		v[x[i]][y[i] >> 3] |= (1 << (y[i] & 7));
		v[y[i]][x[i] >> 3] |= (1 << (x[i] & 7));
	}
	for (int i = 1; i <= m; i++)
		for (int k = 0; k < (n >> 3) + 1; k++)
			rez += nr_biti[v[x[i]][k] & v[y[i]][k]];
	printf("%ld\n", rez / 3);
	fclose(stdin);
	fclose(stdout);
	return 0;
}