Cod sursa(job #119906)

Utilizator Darth_NiculusIvan Nicolae Darth_Niculus Data 3 ianuarie 2008 17:09:54
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.99 kb
/* Ivan Nicolae - Bucuresti */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define NMAX 1050

int i,j,n,m,H[NMAX],L[NMAX],ST[NMAX],DR[NMAX],PART;

void Sub(int A[], int B[])
{
 int i;
 for (i=1;i<=B[0];i++)
    A[B[i]]=0;
}

void Sec(int A[], int B[])
{
 int i,ALA[NMAX],C[NMAX];
 memset(ALA,0,sizeof(ALA));
 for (i=1;i<=B[0];i++)
    ALA[B[i]]=1;
 memset(C,0,sizeof(C));
 for (i=1;i<=n;i++)
    if (A[i] && ALA[i])
      C[i]=1;
 memcpy(A,C,sizeof(C));
}

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

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

 fseek(stdin,0,SEEK_SET);
 memset(ST,0,sizeof(ST));
 memset(DR,0,sizeof(DR));

 scanf("%d%d",&n,&m);
 for (i=1;i<=m;i++)
    {
     memset(ST,0,sizeof(ST));
     memset(DR,0,sizeof(DR));
     scanf("%d",&DR[0]);
     ST[0]=DR[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",&PART);
     if (PART == 0)
       {
        Sub(H,ST);
        Sub(H,DR);
        Sub(L,ST);
        Sub(L,DR);
       }
     else
     if (PART == 1)
       {
        Sec(H,ST);
        Sec(L,DR);
       }
     else
     if (PART == 2)
       {
        Sec(H,DR);
        Sec(L,ST);
       }
    }

 int Lh=0,Ll=0,Care;
 for (i=1;i<=n;i++)
    if (H[i])
      {
       Lh++;
       Care=i;
      }
 for (i=1;i<=n;i++)
    if (L[i])
      {
       Ll++;
       Care=i;
      }

 if (Lh==1 && Ll==0)
   printf("%d",Care);
   else
 if (Ll==1 && Lh==0)
   printf("%d",Care);
   else
 printf("0");
 

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