Cod sursa(job #6758)

Utilizator danielpDaniel Pasaila danielp Data 20 ianuarie 2007 21:38:58
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
using namespace std;

#define MAXN 1011
#define MAXI 111

int N, M, V[MAXN][MAXI], nrv[MAXN], C[MAXN], P[MAXN];

void read()
{
	int i, p, j;

	scanf("%d %d", &N, &M);

	for (i = 0; i < N; i++)
		scanf("%d", P + i);

	for (i = 0; i < M; i++)
	{
		scanf("%d", &p);
		scanf("%d %d", &C[p], &nrv[p]);
		for (j = 0; j < nrv[p]; j++)
			scanf("%d", &V[p][j]);
	}
}

void aplica(int i)
{
	int j;

	for (j = 0; j < nrv[i]; j++)
		P[V[i][j]] ^= 1;
}

void solve()
{
	int rez = 0, i;

	for (i = 0; i < N; i++)
		if (!P[i])
		{
			rez += C[i];
			aplica(i);
		}

	printf("%d\n", rez);
}

int main()
{
	freopen("aprindere.in", "r", stdin);
	freopen("aprindere.out", "w", stdout);

	read();
	solve();

	return 0;
}