Cod sursa(job #27622)

Utilizator VmanDuta Vlad Vman Data 6 martie 2007 21:21:44
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.7 kb
#include <stdlib.h>
#include <stdio.h>
#define nmax 1025

int n, m, i, j, k, rez, u[nmax],g[nmax],l[nmax],r[nmax],nrg,nru,pg,pu;

int main()
{
 freopen("balanta.in","r",stdin);
 scanf("%d %d\n",&n,&m);
 for (i=0;i<m;++i)
     {
     scanf("%d",&k);
     for (j=0;j<k;++j)
         scanf("%d",&l[j]);
     for (j=0;j<k;++j)
         scanf("%d",&r[j]);
     scanf("%d\n",&rez);
     if (rez==0)
        {
        for (j=0;j<k;++j)
            {
             u[l[j]]=1;
             u[r[j]]=1;
             g[l[j]]=1;
             g[r[j]]=1;
            }
        }
        else if (rez==1)
             {
              for (j=1;j<=n;++j)
                  {
                  u[j]+=1;
                  g[j]+=1;
                  }
              for (j=0;j<k;++j)
                  {
                  g[l[j]]-=1;
                  u[r[j]]-=1;
                  }
             }
             else
                 {
                  for (j=1;j<=n;++j)
                      {
                      u[j]+=1;
                      g[j]+=1;
                      }
                  for (j=0;j<k;++j)
                      {
                      g[r[j]]-=1;
                      u[l[j]]-=1;
                      }
                 }
}
fclose(stdin);

for (i=1;i<=n;++i)
    {
    if (g[i]==0)
       {
       ++nrg;
       pg=i;
       }
    if (u[i]==0)
       {
       ++nru;
       pu=i;
       }
    }

freopen("balanta.out","w",stdout);
if (((nrg>1)&&(nru>1))||((nrg==0)&&(nru==0))) printf("%d",0);
   else if ((nrg==1)&&(nru==1)&&(pg!=pu)) printf("%d",0);
        else if (nrg==1) printf("%d",pg);
             else printf("%d",pu);
fclose(stdout);
return 0;
}