Cod sursa(job #462939)

Utilizator darrenRares Buhai darren Data 14 iunie 2010 11:17:14
Problema Triplete Scor 100
Compilator cpp Status done
Runda biti2 Marime 0.67 kb
#include<fstream>
using namespace std;

int n, m;
int a[4098][130];
int nok;
long long tot;

int main()
{
	ifstream fin("triplete.in");
	ofstream fout("triplete.out");
	fin >> n >> m;
	
	int p1, p2;
	for (int i = 1; i <= m; ++i)
	{
		fin >> p1 >> p2;
		a[p1][p2 / 32] |= (1 << (p2 % 32));
		a[p2][p1 / 32] |= (1 << (p1 % 32));
	}
	
	for (int i = 1; i < n; ++i)
		for (int j = i + 1; j <= n; ++j)
			if (a[i][j / 32] & (1 << (j % 32)))
			{
				int count = 0;
				for (int k = 0; k < 130; ++k)
				{
					int aux = a[i][k] & a[j][k];
					while (aux)
					{
						++count;
						aux &= aux - 1;
					}
				}
				tot += count;
			}
	fout << tot / 3;
}