Cod sursa(job #8603)

Utilizator azotlichidAdrian Vladu azotlichid Data 25 ianuarie 2007 00:50:24
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
using namespace std;

#define FOR(i, a, b) for (i = (a); i <= (b); i ++)
#define REP(i, n)    for (i =   0; i <  (n); i ++)
#define PB			 push_back

#define NMAX 1024
int N, M, i, j, k;
int A[NMAX], T[NMAX];
vector<int> adj[NMAX];

int main(void)
{
	freopen("aprindere.in", "r", stdin);
	freopen("aprindere.out", "w", stdout);
	scanf("%d %d", &N ,&M);
	REP(i, N) scanf("%d", &A[i]);
	REP(i, M)
	{
		int C, TC, NRC;
		scanf("%d %d %d", &C, &TC, &NRC);
		T[C] = TC;
		REP(j, NRC)
			scanf("%d", &k), adj[C].PB(k);
	}

	int Ans = 0;
	REP(i, N)
		if (!A[i])
		{
			Ans += T[i];
			for (vector<int> :: iterator it = adj[i].begin(); it != adj[i].end(); it ++)
					A[*it] ^= 1;
		}
	printf("%d\n", Ans);
	return 0;
}