Cod sursa(job #94673)

Utilizator lostBlanaru Adina lost Data 24 octombrie 2007 18:22:47
Problema Balanta Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
#include<stdio.h>
int viz[1025],b[1025],a[1025];
int main()
{
int i,k,n,x,m;
freopen("balanta.in","r",stdin);
freopen("balanta.out","w",stdout);
scanf("%d%d",&n,&m);
int j;
for(j=1;j<=m;j++)
   {
   scanf("%d",&k);
   for(i=1;i<=k;i++)
      scanf("%d",&a[i]);
   for(i=1;i<=k;i++)
      scanf("%d",&b[i]);
   scanf("%d",&x);
   if (x==0)
      for(i=1;i<=k;i++)
	  viz[a[i]]=viz[b[i]]=-1;
   else
     if (x==1)
       for(i=1;i<=k;i++)
	  {
	  if(viz[a[i]]==1 || viz[a[i]]==-1)
	       viz[a[i]]=-1;
	    else
	       viz[a[i]]=2;

	  if( viz[b[i]]==2 || viz[b[i]]==-1)
	       viz[b[i]]=-1;
	    else
	       viz[b[i]]=1;
	  }
       else
	  for(i=1;i<=k;i++)
	  {
	  if(viz[b[i]]==1 || viz[b[i]]==-1)
	       viz[b[i]]=-1;
	    else
	       viz[b[i]]=2;
	  if( viz[a[i]]==2 || viz[a[i]]==-1)
	       viz[a[i]]=-1;
	    else
	       viz[a[i]]=1;

	   }

   for(i=1;i<=k+1;i++)
	a[i]=b[i]=0;
   }
int a1,a2,a3,a0;
a1=a2=a0=a3=0;
for(i=1;i<=n;i++)
    {
    if(viz[i]==1)
	   a1++;
    else
       if(viz[i]==2)
	   a2++;
    else
       if(viz[i]==-1)
	   a3++;
    else
       if(viz[i]==0)
	   a0++;
    }
if(a0!=0 && a1==a2 && a1 !=1)
   {
   printf("0\n");
   return 0;
   }
if(a3==n)
   {
   printf("0\n");
   return 0;
   }
if(a2==1 && a1!=1)
   for(i=1;i<=n;i++)
      if(viz[i]==2)
	 {
	 printf("%d\n",i);
	 return 0;
	 }
if(a2!=1 && a1==1)
    for(i=1;i<=n;i++)
       if(viz[i]==1)
	 {
	 printf("%d\n",i);
	 return 0;
	 }
printf("0\n");
return 0;
}