Cod sursa(job #14780)

Utilizator vlad_popaVlad Popa vlad_popa Data 9 februarie 2007 19:27:58
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
using namespace std;

#include <cstdio>

#define FIN "aprindere.in"
#define FOUT "aprindere.out"
#define NMAX 1001

int N, M;
struct robbery {int afect[101], stare, tmp, nr;};
robbery v[NMAX];

int
 main ()
{
  int i, j, c, sol = 0, t, nr;
  freopen (FIN, "rt", stdin);
  freopen (FOUT, "wt", stdout);

  scanf ("%d%d", &N, &M);
  for (i = 0; i < N; ++ i)
    scanf ("%d", &v[i].stare);
  for (i = 1; i <= M; ++ i)
   {
     scanf ("%d", &c);
     scanf ("%d", &v[c].tmp);
     scanf ("%d", &v[c].nr);
     for (j = 1; j <= v[c].nr; ++ j)
       scanf ("%d", &v[c].afect[j]);
   }
  for (i = 0; i < N; ++ i)
   {
     if (v[i].stare)
       continue;
     sol += v[i].tmp;
     for (j = 1; j <= v[i].nr; ++ j)
       v[v[i].afect[j]].stare = 1 - v[v[i].afect[j]].stare;
   }
  printf ("%d\n", sol);
  return 0;
}