Cod sursa(job #249668)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 28 ianuarie 2009 22:27:46
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <cstdio>
#define c 32
#define l 66000

long n,m,a[l],b[l],v[4100][150],i,j,ct;

int main()
{
	freopen("triplete.in","r",stdin);
	freopen("triplete.out","w",stdout);
	scanf("%ld %ld",&n,&m);
	for (i=1; i<=m; i++)
	{
		scanf("%ld %ld",&a[i],&b[i]);
		if (a[i]<b[i])
		{
		    long aux=a[i];
			a[i]=b[i];
			b[i]=aux;
        }
		long p=c-(b[i]%c);
		long r=b[i]/c+1;
		long q=(v[a[i]][r]>>p) +1;
		q<<=p;
		v[a[i]][r]=q|v[a[i]][r];
    }
	for (i=1; i<=m; i++)
		for (j=1; j<=a[i]/c+1; j++)
		{
		    n=v[a[i]][j]&v[b[i]][j];
			while (n)
			{
				n&=n-1;
				ct++;
            }
        }
	printf("%ld",ct);
}