Cod sursa(job #955564)

Utilizator classiusCobuz Andrei classius Data 1 iunie 2013 01:11:07
Problema Balanta Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <cstdio>
#include <fstream>
#include <vector>

using namespace std;

int main()
{
    FILE* f=fopen("balanta.in","r");
    ofstream g("balanta.out");

    size_t n,m;

    fscanf(f,"%d%d",&n,&m);

    vector<bool> hv(n+1,1),lv(n+1,1);

    while(m--){
        vector<int> a,b;
        int k;
        fscanf(f,"%d",&k);

        for(size_t i=0;i<k;i++){
            int x;
            fscanf(f,"%d",&x);
            a.push_back(x);
        }

        for(size_t i=0;i<k;i++){
            int x;
            fscanf(f,"%d",&x);
            b.push_back(x);
        }

        int st;
        fscanf(f,"%d",&st);

        switch(st){
        case 0:
            for(size_t i=0;i<k;i++){
                hv[a[i]]=lv[a[i]]=0;
                hv[b[i]]=lv[b[i]]=0;
            }
            break;
        case 1:
            for(size_t i=0;i<k;i++)
                lv[a[i]]=0;
            for(size_t i=0;i<k;i++)
                hv[b[i]]=0;
            break;
        case 2:
            for(size_t i=0;i<k;i++)
                lv[b[i]]=0;
            for(size_t i=0;i<k;i++)
                hv[a[i]]=0;
            break;
        }
    }
    int hvc=0,lvc=0;
    int x,y;
    for(size_t i=1;i<=n;i++)
        if(hv[i]){
            hvc++;
            x=i;
        }
    for(size_t i=1;i<=n;i++)
        if(lv[i]){
            lvc++;
            y=i;
        }

    if(hvc==1){
        g<<x;
        return 0;
    }
    if(lvc==1){
        g<<y;
        return 0;
    }
    g<<0;

    return 0;
}