Cod sursa(job #25065)

Utilizator Darth_NiculusIvan Nicolae Darth_Niculus Data 4 martie 2007 10:21:37
Problema Balanta Scor 10
Compilator cpp Status done
Runda preONI 2007, Runda 3, Clasa a 10-a Marime 1.5 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define NMAX 1050

int i,n,j,m,Sus[NMAX],ST[NMAX],DR[NMAX],REZ;

void Scoate_ST()
{
 int i;
 for (i=1;i<=ST[0];i++)
    Sus[ST[i]]=0;
}

void Scoate_DR()
{
 int i;
 for (i=1;i<=DR[0];i++)
    Sus[DR[i]]=0;
}

int main()
{
 freopen("balanta.in","r",stdin);
 freopen("balanta.out","w",stdout);

 memset(Sus,0,sizeof(Sus));

 scanf("%d%d",&n,&m);
 for (i=1;i<=m;i++)
    {
     scanf("%d",&ST[0]);
     DR[0]=ST[0];
     for (j=1;j<=ST[0];j++)
        {
         scanf("%d",&ST[j]);
         Sus[ST[j]]=1;
        }
     for (j=1;j<=DR[0];j++)
        {
         scanf("%d",&DR[j]);
         Sus[DR[j]]=1;
        }
    }

 memset(ST,0,sizeof(ST));
 memset(DR,0,sizeof(DR));

 fseek(stdin,0,SEEK_SET);

 scanf("%d%d",&n,&m);
 for (i=1;i<=m;i++)
    {
     memset(ST,0,sizeof(ST));
     memset(DR,0,sizeof(DR));
     scanf("%d",&ST[0]);
     DR[0]=ST[0];
     for (j=1;j<=ST[0];j++)
        scanf("%d",&ST[j]);
     for (j=1;j<=DR[0];j++)
        scanf("%d",&DR[j]);
     scanf("%d",&REZ);

     if (REZ == 0)
       {
        Scoate_ST();
        Scoate_DR();
       }
       else if (REZ == 1)
              Scoate_DR();
       else if (REZ == 2)
              Scoate_ST();
    }

 int gasit=0,el;
 for (i=1;i<=n;i++)
    if (Sus[i])
      {
       gasit++;
       el=i;
      }

 if (gasit==1)
   printf("%d",el);
   else printf("0");

 fclose(stdin);
 fclose(stdout);
 
 return 0;
}