Cod sursa(job #1208832)

Utilizator IulianBoboUAIC Boboc Iulian IulianBobo Data 16 iulie 2014 17:30:24
Problema Balanta Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
	ifstream f("balanta.in");
	ofstream g("balanta.out");
	int vizG[1025], vizU[1025], n, m, i, j, k, r, st[613], dr[613], greu = 0, usor = 0, solG,solU,sol=0;
	f >> n >> m;
	for (i = 1; i <= n; ++i) vizU[i] = vizG[i] =1;
	for (i = 1; i <= m; ++i)
	{
		f >> k;
		for (j = 1; j <= k; ++j) f >> st[j];
		for (j = 1; j <= k; ++j) f >> dr[j];
		f >> r;
		if (r == 0)
		{
			for (j = 1; j <= k; ++j) vizU[st[j]] = vizU[dr[j]] = vizG[st[j]] = vizG[dr[j]]=0;
		}
		else if (r == 1)
		{
			for (j = 1; j <= k; ++j)
			{
				vizG[dr[j]] = 0;
				vizU[st[j]] = 0;
			}
		}
		else for (j = 1; j <= k; ++j)
		{
			vizG[st[j]] = 0;
			vizU[dr[j]] = 0;
		}
	}
	for (i = 1; i <= n; ++i)
	{
		if (vizG[i] == 1)
		{
			greu++;
			if (greu == 1) solG = i;
		}
		if (vizU[i] == 1)
		{
			usor++;
			if (usor == 1) solU = i;
		}
	}
	if (!(usor == 1 && greu == 1))
	{
		if (usor==1)
		{
			if (vizG[solU] == 0) sol = solU;
		}
		if (greu == 1)
		{
			if (vizU[solG] == 0) sol = solG;
		}
	}
	g << sol;
	f.close();
	g.close();
	return 0;
}