Cod sursa(job #27726)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 7 martie 2007 00:16:12
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#include <string.h>

#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define nmax 1025

int n,k,m,A[nmax],B[nmax],sol,poz,C[nmax],D[nmax],E[nmax];

int main()
{
	int i,j,iii,ii;
	freopen("balanta.in","r",stdin);
	freopen("balanta.out","w",stdout);
	scanf("%d %d",&n,&k);
		memset(E,-1,sizeof(E));
		memset(D,-1,sizeof(D));
	FOR(ii,0,k)
	{
		scanf("%d",&m);
		FOR(i,0,2*m)
			scanf("%d",&C[i]);
		scanf("%d",&j);
		if(j==0)
			memset(A,-1,sizeof(A)),memset(B,-1,sizeof(B));
		else
			memset(A,0,sizeof(A)),memset(B,0,sizeof(B));
		FOR(i,0,m)
		{
			if(j==0)
				A[C[i]]=A[C[i+m]]=B[C[i]]=B[C[i+m]]=0;
			if(j==1)
				A[C[i]]=-1,B[C[i+m]]=-1;
			if(j==2)
				A[C[i+m]]=-1,B[C[i]]=-1;
		}
		FOR(i,1,n+1)
			D[i]&=A[i],E[i]&=B[i];
	}
	FOR(i,1,n+1)
		if(E[i]||D[i])
			sol++,poz=i;
	if(sol!=1)
		poz=0;
	printf("%d\n",poz);
	return 0;
}