Cod sursa(job #1418628)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 13 aprilie 2015 15:58:39
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.98 kb
#include<fstream>
#include<cstring>
using namespace std;
int n, m, i, t, nr1, nr2, k;
int a[1030], b[1030], v[1030], w[1030], f1[1030], f2[1030];
ifstream fin("balanta.in");
ofstream fout("balanta.out");
int main(){
    for(i = 1; i <= 1024; i++){
        a[i] = b[i] = 1;
    }
    fin>> n >> m;
    for(; m; m--){
        fin>> k;
        for(i = 1; i <= k; i++){
            fin>> v[i];
        }
        for(i = 1; i <= k; i++){
            fin>> w[i];
        }
        fin>> t;
        if(t == 0){
            for(i = 1; i <= k; i++){
                a[v[i]] = a[w[i]] = 0;
                b[v[i]] = b[w[i]] = 0;
            }
        }
        else{
            memset(f1, 0, sizeof(f1));
            memset(f2, 0, sizeof(f2));
            for(i = 1; i <= k; i++){
                f1[v[i]] = 1;
                f2[w[i]] = 1;
            }
            if(t == 1){
                for(i = 1; i <= n; i++){
                    if(f1[i] == 0){
                        a[i] = 0;
                    }
                    if(f2[i] == 0){
                        b[i] = 0;
                    }
                }
            }
            else{
                 for(i = 1; i <= n; i++){
                   if(f1[i] == 0){
                        b[i] = 0;
                    }
                    if(f2[i] == 0){
                        a[i] = 0;
                    }
                }
            }
        }
    }
    for(i = 1; i <= n; i++){
        nr1 += a[i];
        nr2 += b[i];
    }
    if(nr1 == 1 && nr2 == 0){
        for(i = 1; i <= n; i++){
            if(a[i] == 1){
                k = i;
                break;
            }
        }
        fout<< k <<"\n";
        return 0;
    }
    if(nr1 == 0 && nr2 == 1){
         for(i = 1; i <= n; i++){
            if(b[i] == 1){
                k = i;
                break;
            }
        }
        fout<< k <<"\n";
        return 0;
    }
    fout<<"0\n";
    return 0;
}