Cod sursa(job #1289608)

Utilizator MihneaGhiraMihnea MihneaGhira Data 10 decembrie 2014 00:19:35
Problema Balanta Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.21 kb
#include<fstream>
using namespace std;
ifstream fin("balanta.in");
ofstream fout("balanta.out");
int n,m,k,T,M,i,j,c,N1,N2;
int H[1025],L[1025],A[1025],B[1025],C[1025];
int main(){
    fin>>n>>M;
    for(i=1;i<=n;i++)
        H[i]=i;
    for(i=1;i<=n;i++)
        L[i]=i;
    N1=n;
    N2=n;
    for(m=1;m<=M;m++){
        fin>>k;
        for(i=1;i<=k;i++)
            fin>>A[i];
        for(i=1;i<=k;i++)
            fin>>B[i];
        fin>>T;
        if(T==0){
            for(i=1;i<=k;i++){
                if(H[A[i]]!=0)
                    N1--;
                H[A[i]]=0;
                if(L[A[i]]!=0)
                    N2--;
                L[A[i]]=0;
                if(H[B[i]]!=0)
                    N1--;
                H[B[i]]=0;
                if(L[B[i]]!=0)
                    N2--;
                L[B[i]]=0;
            }
        }
        if(T==1){
            c=0;
            for(i=1;i<=k;i++)
                C[++c]=H[A[i]];
            for(i=1;i<=n;i++)
                H[i]=0;
            for(i=1;i<=c;i++)
                H[C[i]]=C[i];
            N1-=(N1-c);

            c=0;
            for(i=1;i<=k;i++)
                C[++c]=L[B[i]];
            for(i=1;i<=n;i++)
                L[i]=0;
            for(i=1;i<=c;i++)
                L[C[i]]=C[i];
            N2-=(N2-c);
        }
        if(T==2){
               c=0;
            for(i=1;i<=k;i++)
                C[++c]=H[B[i]];
            for(i=1;i<=n;i++)
                H[i]=0;
            for(i=1;i<=c;i++)
                H[C[i]]=C[i];
            N1-=(N1-c);

            c=0;
            for(i=1;i<=k;i++)
                C[++c]=L[A[i]];
            for(i=1;i<=n;i++)
                L[i]=0;
            for(i=1;i<=c;i++)
                L[C[i]]=C[i];
            N2-=(N2-c);
        }
    }
    if(N1==1)
        for(i=1;i<=n;i++){
            if(H[i]!=0){
                fout<<H[i];
                break;
            }
        }
    else{
        if(N2==0){
            for(i=1;i<=n;i++)
                if(L[i]!=0){
                    fout<<L[i];
                    break;
                }
        }
        else
            fout<<"0";
    }
    return 0;
}