Cod sursa(job #68951)

Utilizator Binary_FireFlorin Pg Binary_Fire Data 30 iunie 2007 13:20:07
Problema Balanta Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <cstdio>
#define fin  "balanta.in"
#define fout "balanta.out"
#define Nmax 1025

int N,M,K,v1[Nmax],v2[Nmax];

int main() {
int i,j,a[Nmax],b[Nmax];
int opt,pos1,pos2;

	freopen(fin,"r",stdin); freopen(fout,"w",stdout);

	scanf("%d%d",&N,&M);

	for (i=1;i<=N;++i)
		v1[i]=v2[i]=-1;

	for (i=1;i<=M;++i) {
		scanf("%d",&K);
		for (j=1;j<=K;++j)
			scanf("%d",&a[j]);
		for (j=1;j<=K;++j)
			scanf("%d",&b[j]);
		scanf("%d",&opt);
		if (opt==0) 
			for (j=1;j<=K;++j) {
				v1[a[j]]=0;
				v2[b[j]]=0; 
			}
		if (opt==1)
			for (j=1;j<=K;++j) {
				v1[a[j]]=0;
				v2[b[j]]=0;
				if (v1[b[j]]==-1) v1[b[j]]=1;
				if (v2[a[j]]==-1) v2[a[j]]=1;
			}
		if (opt==2)
			for (j=1;j<=K;++j) {
				v1[b[j]]=0;
				v2[a[j]]=0;
				if (v1[a[j]]==-1) v1[a[j]]=1;
				if (v2[b[j]]==-1) v2[b[j]]=1;
			}
	}
/*		
	for (i=1;i<=N;++i)
		fprintf(stderr,"%d ",v1[i]);
	fprintf(stderr,"\n");
	for (i=1;i<=N;++i)
		fprintf(stderr,"%d ",v2[i]);
	fprintf(stderr,"\n");
*/	
	pos1=0; pos2=0;
	for (i=1;i<=N;++i) {
		if (v1[i]==1) 
			if (pos1>0)
				pos1=-1;
			else
			if (pos1==0)
				pos1=i;
		if (v2[i]==1) 
			if (pos2>0)
				pos2=-1;
			else
			if (pos2==0)
				pos2=i;
	}

	if (pos1 > 0 && pos2 > 0 && pos1!=pos2)
		pos1=pos2=-1;

	if (pos1<0)
		pos1=pos2;

	if (pos1<0)
		pos1=0;

	printf("%d\n",pos1);

	return 0;
}