Cod sursa(job #25379)

Utilizator ZuziFilip Sanziana Zuzi Data 4 martie 2007 12:20:09
Problema Balanta Scor 10
Compilator cpp Status done
Runda preONI 2007, Runda 3, Clasa a 10-a Marime 1.26 kb
#include<stdio.h>
#include<string.h>
int n,m,viz[1025],nr,k;
int a[550],b[550];


FILE *f=fopen("balanta.in","r");
FILE *g=fopen("balanta.out","w");


void pune(int a[],int b[])
{ int i,numa,poza,numb,pozb;
	if (nr==1)
	  if (viz[a[1]]==viz[b[1]])
		viz[a[1]]=3;
	  else
		viz[a[1]]=2,viz[b[1]]=1;
	else
	 {
	   numa=0;poza=0;
		for (i=1;i<=nr;i++)
		  if (viz[a[i]]==2)
		   ++numa,poza=i;
		  else
		   viz[a[i]]=2;
	   numb=0;pozb=0;
		for (i=1;i<=nr;i++)
		   if (viz[b[i]]==1)
			 ++numb,pozb=i;
		   else
			 viz[b[i]]=1;
		 if (numa==1)
		   viz[poza]=3;
		 if (numb==1)
		   viz[pozb]=3;

	 }

}



void read()
{
   int i,j,ex=1;

   memset(viz,0xff,sizeof(viz));
   fscanf(f,"%d%d",&n,&m);
	  for (i=1;i<=m;i++)
	   {
		   fscanf(f,"%d",&nr);
			 for (j=1;j<=nr;j++)
			   fscanf(f,"%d",&a[j]);
			 for (j=1;j<=nr;j++)
			   fscanf(f,"%d",&b[j]);
			 fscanf(f,"%d",&k);
			 if (k==0)
			  { for (j=1;j<=nr;j++)
				 viz[a[j]]=0,viz[b[j]]=0;
			  }
			else
			  if (k==1)
			   pune(a,b);
			  else
			   pune(b,a);
	   }
   for (i=1;i<=n && ex;i++)
	 if (viz[i]==3)
	   ex=0;
   if (ex==0)
	 fprintf(g,"%d",i-1);
   else
	 fprintf(g,"0");
}


int main()
{
read();
fclose(f);
fclose(g);
return 0;
}