Cod sursa(job #237486)

Utilizator DraStiKDragos Oprica DraStiK Data 29 decembrie 2008 21:36:14
Problema Balanta Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <stdio.h>
int a[1030],b[1030],u[1030],v[1030];
int n,m,k,t;
void scoate (int x[1030],int y[1030])
{
    int z[1030],i,j,ok;
    z[0]=0;
    for (i=1; i<=x[0]; ++i)
    {
        ok=0;
        for (j=1; j<=y[0]; ++j)
			if (x[i]==y[j])
				ok=1;
		if (!ok)
			z[++z[0]]=x[i];
	}
	for (i=0; i<=z[0]; ++i)
		x[i]=z[i];
}
void inter (int x[1030],int y[1030])
{
    int z[1030],i,j,ok;
    z[0]=0;
    for (i=1; i<=x[0]; ++i)
    {
        ok=0;
        for (j=1; j<=y[0]; ++j)
            if (x[i]==y[j])
                ok=1;
        if (ok)
            z[++z[0]]=x[i];
    }
    for (i=0; i<=z[0]; ++i)
        x[i]=z[i];    
}
int main ()
{
    freopen ("balanta.in","r",stdin);
	freopen ("balanta.out","w",stdout);
	int i,j;
	scanf ("%d%d",&n,&m);
	a[0]=b[0]=n;
	for (i=1; i<=n; ++i)
		a[i]=b[i]=i;
	for (i=1; i<=m; ++i)
	{
		scanf ("%d",&k);
		u[0]=v[0]=k;
		for (j=1; j<=k; ++j)
			scanf ("%d",&u[j]);
		for (j=1; j<=k; ++j)
			scanf ("%d",&v[j]);
        scanf ("%d",&t);
        if (t==0)
        {
            scoate (a,u);
            scoate (a,v);
            scoate (b,u);
            scoate (b,v);
        }
        else if (t==1)
        {
            inter (a,u);
            inter (b,v);
        }
        else if (t==2)
        {
            inter (a,v);
            inter (b,u);
        }    
    }
    if (a[0]==1 && !b[0])
        printf ("%d",a[1]);
    else if (!a[0] && b[0]==1)
        printf ("%d",b[1]);
    else 
        printf ("0");
    return 0;
}