Cod sursa(job #2099077)

Utilizator luanastLuana Strimbeanu luanast Data 3 ianuarie 2018 22:36:37
Problema Balanta Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.66 kb
#include <fstream>
using namespace std;
ifstream fin ("balanta.in");
ofstream fout ("balanta.out");
int n,m,i,j,dr[520],st[520],w[1030],k,r,fals,falsm,cnt1,cnt0;
int main(){
    fin>>n>>m;
    //-1 = aur sigur
    //0 = neverificat
    //1 = mai usor
    //2 = mai greu
    for(i=1;i<=m;i++){
        fin>>k;
        for(j=1;j<=k;j++)
            fin>>st[j];
        for(j=1;j<=k;j++)
            fin>>dr[j];
        fin>>r;
        if(r==0){
            for(j=1;j<=k;j++)
                w[st[j]]=-1;
            for(j=1;j<=k;j++)
                w[dr[j]]=-1;
        }
        if(r==1){
            for(j=1;j<=k;j++){
                if(w[st[j]]!=-1){
                    if(w[st[j]]==2){
                        fals++;
                        falsm=st[j];
                    }
                    if(w[st[j]]==1)
                        w[st[j]]=-1;
                    if(w[st[j]]==0)
                        w[st[j]]=2;
                }
            }
            for(j=1;j<=k;j++){
                if(w[dr[j]]!=-1){
                    if(w[dr[j]]==1){
                        fals++;
                        falsm=dr[j];
                    }
                    if(w[dr[j]]==2)
                        w[dr[j]]=-1;
                    if(w[dr[j]]==0)
                        w[dr[j]]=1;
                }
            }
            if(fals==1){
                fout<<falsm;
                return 0;
            }
            else
                fals=0;
        }
        if(r==2){
            for(j=1;j<=k;j++){
                if(w[st[j]]!=-1){
                    if(w[st[j]]==1){
                        fals++;
                        falsm=st[j];
                    }
                    if(w[st[j]]==2)
                        w[st[j]]=-1;
                    if(w[st[j]]==0)
                        w[st[j]]=1;
                }
            }
            for(j=1;j<=k;j++){
                if(w[dr[j]]!=-1){
                    if(w[dr[j]]==2){
                        fals++;
                        falsm=dr[j];
                    }
                    if(w[dr[j]]==1)
                        w[dr[j]]=-1;
                    if(w[dr[j]]==0)
                        w[dr[j]]=2;
                }
            }
            if(fals==1){
                fout<<falsm;
                return 0;
            }
            else
                fals=0;
        }
    }
    for(i=1;i<=n;i++){
        if(w[i]==-1)
            cnt1++;
        if(w[i]==0){
            cnt0++;
            falsm=w[i];
        }
    }
    if(cnt1+cnt0==n && cnt0==1)
        fout<<falsm;
    else
        fout<<"0";
    return 0;
}