Cod sursa(job #27932)

Utilizator damaDamaschin Mihai dama Data 7 martie 2007 12:18:16
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.62 kb
#include <stdio.h>

int v[1025], temp[1025], n, m, k, cnt, sol;

int main()
{
	freopen("balanta.in","r",stdin);
	freopen("balanta.out","w",stdout);
	int i, j, a;
	
	scanf("%d%d", &n, &m);
	
	for(i = 1; i <= m; ++i)
	{
		scanf("%d", &k);
		for(j = 1; j <= 2 * k; ++j)
		{
			scanf("%d", &temp[j]);
		}
		scanf("%d", &a);
		if(a == 0)
		{
			for(j = 1; j <= 2 * k; ++j)
			{
				v[temp[j]] = 3;
			}
		}
		else if(a == 1)
		{
			for(j = 1; j <= k; ++j)
			{
				if(v[temp[j]] == -1)
				    v[temp[j]] = 3;
				if(v[temp[j]] == 0 || v[temp[j]] == 1)
				    v[temp[j]] = 2;
			}
			for(j = k + 1; j <= 2 * k; ++j)
			{
				if(v[temp[j]] == 2)
				{
					v[temp[j]] = 3;
				}
				if(v[temp[j]] == 0 || v[temp[j]] == -1)
				{
					v[temp[j]] = -2;
				}
			}
		    for(j = 1; j <= n; ++j)
		    {
				if(!(v[j] == 2 || v[j] == -2))
				    v[j] = 3;
				else
                                    v[j] /= 2;
			}
		}
		else
		{
	    	for(j = k + 1; j <= 2 * k; ++j)
			{
				if(v[temp[j]] == -1)
				    v[temp[j]] = 3;
				if(v[temp[j]] == 0 || v[temp[j]] == 1)
				    v[temp[j]] = 2;
			}
			for(j = 1; j <= k; ++j)
			{
				if(v[temp[j]] == 2)
				{
					v[temp[j]] = 3;
				}
				if(v[temp[j]] == 0 || v[temp[j]] == -1)
				{
					v[temp[j]] = -2;
				}
			}
			for(j = 1; j <= n; ++j)
			{
				if(!(v[j] == -2 || v[j] == 2))
				    v[j] = 3;
				else
				    v[j] /= 2;
			}
		}
	}

	for(i = 1; i <= n; ++i)
	{
		if(v[i] == 1 || v[i] == -1)
		{
			++cnt;
			sol = i;
		}
	}

	if(cnt == 1)
	{
		printf("%d", sol);
	}
	else
	{
		printf("0");
	}

	return 0;
}