Cod sursa(job #498246)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 4 noiembrie 2010 18:08:46
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 kb
#include<stdio.h>
#include<string.h>

int f1[1052],f2[1052],nr;
int n,m,l[1052],h[1052];
int gr1[1052],gr2[1052];

int main ()
{
    int i,j,lim,rez;
    freopen("balanta.in","r",stdin);
    freopen("balanta.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
    {
        l[i]=1;
        h[i]=1;
    }
    for(i=1;i<=m;i++)
    {
        scanf("%d",&lim);
        for(j=1;j<=lim;j++)
            scanf("%d",&gr1[j]);
        for(j=1;j<=lim;j++)
            scanf("%d",&gr2[j]);
        scanf("%d",&rez);
        memset(f1,0,sizeof(f1));
        memset(f2,0,sizeof(f2));
        for(j=1;j<=lim;j++)
        {
            f1[gr1[j]]=1;
            f2[gr2[j]]=1;
        }
        if(!rez)
            for(j=1;j<=lim;j++)
            {
                l[gr1[j]]=0;
                l[gr2[j]]=0;
                h[gr1[j]]=0;
                h[gr2[j]]=0;
            }
        else if(rez==1)
            for(j=1;j<=n;j++)
            {
                l[j]=l[j]&f2[j];
                h[j]=h[j]&f1[j];
            }
        else
            for(j=1;j<=n;j++)
            {
                h[j]=h[j]&f2[j];
                l[j]=l[j]&f1[j];
            }
    }
    for(i=1;i<=n;i++)
        nr+=l[i]+h[i];
    if(nr!=1)
    {
        printf("0\n");
        return 0;
    }
    for(i=1;i<=n;i++)
        if(l[i])
            printf("%d\n",i);
        else
            if(h[i])
                printf("%d\n",i);
    return 0;
}