Cod sursa(job #29952)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 11 martie 2007 21:34:21
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
#include <stdio.h>
#include <string>

#define maxn 1030

int n,m,sol,rez;
char a[maxn],b[maxn],c[maxn],d[maxn];

int main()
{
    freopen("balanta.in","r",stdin);
    freopen("balanta.out","w",stdout);
    
    scanf("%d %d",&n,&m);
    
    int i,l,j,x,r;
    
    for (i=1;i<=n;i++)
    {
        a[i]=1;
        b[i]=1;
    }
    
    for (i=1;i<=m;i++)
    {
        memset(c,0,sizeof(c));
        memset(d,0,sizeof(d));
        scanf("%d ",&l);
        
        for (j=1;j<=l;j++) 
        {
            scanf("%d ",&x);
            c[x]=1;
        }
        
        for (j=1;j<=l;j++) 
        {
            scanf("%d ",&x);
            d[x]=1;
        }
        
        scanf("%d ",&r);        
        
        if (r==0) 
          for (j=1;j<=n;j++) 
          {
              a[j]&=(!c[j]);
              a[j]&=(!d[j]);
              b[j]&=(!c[j]);
              b[j]&=(!d[j]);
          }
          else if (r==1) 
               for (j=1;j<=n;j++)
               {
                   a[j]&=c[j];
                   b[j]&=d[j];
               }
               else for (j=1;j<=n;j++) 
                    {
                        a[j]&=d[j];
                        b[j]&=c[j];
                    }
    }
    
    for (i=1;i<=n;i++) 
        if (a[i]>0) 
        {
            sol++;
            rez=i;
        }

    for (i=1;i<=n;i++) 
      if (b[i]>0)
      {
            sol++;
            rez=i;
      }
      
    if (sol>1) printf("0\n");
    else printf("%d\n",rez);
    
    return 0;
}