Cod sursa(job #1208890)

Utilizator IulianBoboUAIC Boboc Iulian IulianBobo Data 16 iulie 2014 18:50:25
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 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[1025], dr[1025], greu = 0, usor = 0, solG=0,solU=0,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)
			{
				if(vizU[dr[j]]==1) vizU[dr[j]] = 2; 
				if(vizG[st[j]]==1) vizG[st[j]] = 2;
			}
			for (j = 1; j <= n; j++)
			{
				if (vizU[j] != 2) vizU[j] = 0;
				else vizU[j] = 1;
				if (vizG[j] != 2) vizG[j] = 0;
				else vizG[j] = 1;
			}
		}
		else
		{
			for (j = 1; j <= k; ++j)
			{
				if(vizU[st[j]]==1) vizU[st[j]] = 2; 
				if(vizG[dr[j]]==1) vizG[dr[j]] = 2;
			}
			for (j = 1; j <= n; j++)
			{
				if (vizU[j] != 2) vizU[j] = 0;
				else vizU[j] = 1;
				if (vizG[j] != 2) vizG[j] = 0;
				else vizG[j] = 1;
			}
		}
	}
	for (i = 1; i <= n; ++i)
	{
		if (vizU[i] == 1)
		{
			++usor;
			if (usor == 1) solU = i;
		}
		if (vizG[i] == 1)
		{
			++greu;
			if (greu == 1) solG = i;
		}
	}
	if (usor + greu == 1)
	{
		g << solG + solU;
	}
	else g << 0;
	f.close();
	g.close();
	return 0;
}