Cod sursa(job #7224)

Utilizator bogdan2412Bogdan-Cristian Tataroiu bogdan2412 Data 21 ianuarie 2007 13:10:15
Problema Aprindere Scor 100
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasa a 9-a si gimnaziu Marime 0.82 kb
#include <cstdio>
#include <vector>

using namespace std;

#define MAXN 1024

int N, M;
int x[MAXN];

char hastrans[MAXN];
vector<int> trans[MAXN];
int transT[MAXN];

int main()
{
	freopen("aprindere.in", "rt", stdin);
	freopen("aprindere.out", "wt", stdout);
	scanf("%d %d", &N, &M);
	int i;
	for (i = 0; i < N; i++)
		scanf("%d", x + i);
	for (i = 0; i < M; i++)
	{
		int poz, T, nr;
		scanf("%d %d %d", &poz, &T, &nr);
		hastrans[poz] = 1;
		transT[poz] = T;
		for (; nr; nr--)
		{
			int k;
			scanf("%d", &k);
			trans[poz].push_back(k);
		}
	}
	
	int S = 0;
	for (i = 0; i < N; i++)
		if (!x[i])
		{
			if (!hastrans[i])
			{
				printf("-1\n");
				return 0;
			}
			S += transT[i];
			vector<int> :: iterator it;
			for (it = trans[i].begin(); it != trans[i].end(); it++)
				x[*it] ^= 1;
		}
	printf("%d\n", S);
	return 0;
}