Pagini recente » Cod sursa (job #2971650) | Cod sursa (job #2549554) | Cod sursa (job #379914) | Cod sursa (job #1434343) | Cod sursa (job #7224)
Cod sursa(job #7224)
#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;
}