Cod sursa(job #190675)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 23 mai 2008 19:55:17
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>

#define Nmax 5000
#define Mmax 65800
#define IN "triplete.in"
#define OUT "triplete.out"

short int nod[Nmax],xx[Mmax],yy[Mmax];
int nr,nrm,n,m;
unsigned char a[Nmax][1000];
void scan()
{
	
	int x,y;
	freopen(IN, "r",stdin);
	freopen(OUT, "w",stdout);
	
	scanf("%d%d", &n,&m);
	for(int i=1;i<=m;++i)
	{	
		scanf("%d%d", &x,&y);
		--x;
		--y;
		++nod[x];
		++nod[y];
		xx[++nr]=x;
		yy[nr]=y;
		a[x][y/8] |= 1<<(y%8);
		a[y][x/8] |= 1<<(x%8);
	}
}

void solve()
{
	int x,rez=0;
	for(int i=1;i<=m;++i)  
		if(nod[xx[i]]>=2 && nod[yy[i]]>=2)  
		{
		    for(int k=0;k<=n/8;++k)
			{
				x=a[xx[i]][k] & a[yy[i]][k];
				while(x)
				{
					++rez;
					x&=(x-1);
				}
			}
		}
	printf("%d", rez/3);
}

int main()
{
	scan();
	solve();
	return 0;
}