Cod sursa(job #8977)

Utilizator alextheroTandrau Alexandru alexthero Data 26 ianuarie 2007 00:09:49
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>

#define nmax 1005

int cost[nmax],cam[nmax][105],x[nmax],este[nmax],n,m;

int invers(int x) {
    if(x == 0) return 1;
    else return 0;
}

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

    scanf("%d %d\n",&n,&m);
    for(int i = 1; i <= n; i++) 
        scanf("%d ",&x[i]);
    scanf("\n");
    for(int i = 1; i <= m; i++) {
        int camera;
        scanf("%d ",&camera);   
        camera++;
        este[camera] = 1;
        scanf("%d %d",&cost[camera],&cam[camera][0]);
        for(int j = 1; j <= cam[camera][0]; j++) { 
            scanf("%d",&cam[camera][j]);
            cam[camera][j]++;
        }
        scanf("\n");
    }
    int tot = 0;
    for(int i = 1; i <= n; i++) 
        if(x[i] == 0) {
            if(!este[i]) {
                printf("-1\n");
                return 0;
            }
            for(int j = 1; j <= cam[i][0]; j++) x[cam[i][j]] = invers(x[cam[i][j]]);
            tot += cost[i];
        }
    printf("%d\n",tot);
}