Cod sursa(job #1848199)

Utilizator Lungu007Lungu Ionut Lungu007 Data 15 ianuarie 2017 16:56:42
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.59 kb
#include <iostream>
#include <fstream>
#define NMAX 1028

using namespace std;

ifstream in("balanta.in");
ofstream out("balanta.out");

int n,m,greu[NMAX],usor[NMAX],st[NMAX],dr[NMAX],t,c;
void solve();

int main()
{
    in >> n >> m;

    for(int i=1;i<=n;i++)
    {
        usor[i] = greu[i] = 1;
    }

    for(int i=0;i<m;i++)
    {
        in >> t;
        for(int j=0;j<t;j++) in >> st[j];
        for(int j=0;j<t;j++) in >> dr[j];
        in >> c;
        solve();
    }
    int sum=0;
    for(int i=1;i<=n;i++)
    {
        sum+=greu[i];
        sum+=usor[i];
    }
    if(sum>1) out << 0;
    else
    {
        for(int i=1;i<=n;i++)
        {
            if(usor[i]==1 || greu[i]==1) {out << i; break;}
        }
    }
    return 0;
}

void solve()
{
    if(c==0)
    {
        for(int i=0;i<t;i++)
        {
            usor[st[i]]=0;usor[dr[i]]=0;
            greu[st[i]]=0;greu[dr[i]]=0;
        }
    }
    else if(c==1)
    {
        for(int i=0;i<t;i++)
        {
            greu[st[i]]++;
        }
        for(int i=1;i<=n;i++)
        {
            if(greu[i]>0)
                greu[i]--;
        }

         for(int i=0;i<t;i++)
        {
            usor[dr[i]]++;
        }
        for(int i=1;i<=n;i++)
        {
            if(usor[i]>0)
                usor[i]--;
        }
    }
    else
    {
         for(int i=0;i<t;i++)
        {
            greu[dr[i]]++;
        }
        for(int i=1;i<=n;i++)
        {
            if(greu[i]>0)
                greu[i]--;
        }

         for(int i=0;i<t;i++)
        {
            usor[st[i]]++;
        }
        for(int i=1;i<=n;i++)
        {
            if(usor[i]>0)
                usor[i]--;
        }
    }

//        for(int i=1;i<=n;i++)
//    {
//        cout << greu[i] << " ";
//    }
//    cout << endl;
//    for(int i=1;i<=n;i++)
//    {
//        cout << usor[i] << " ";
//    }
//    cout << endl << endl;
}
//#include <iostream>
//#include <fstream>
//#define NMAX 1028
//
//using namespace std;
//
//ifstream in("balanta.in");
//ofstream out("balanta.out");
//
//int n,m,greu[NMAX],usor[NMAX],st[NMAX],dr[NMAX],t,c,x;
//void solve();
//void af()
//{
//    for(int i=1;i<=n;i++)
//    {
//        cout << greu[i] << " ";
//    }
//    cout << endl;
//    for(int i=1;i<=n;i++)
//    {
//        cout << usor[i] << " ";
//    }
//    cout << endl << endl;
//}
//int main()
//{
//    in >> n >> m;
//
//    for(int i=1;i<=n;i++)
//    {
//        usor[i] = greu[i] = 1;
//    }
//
//    for(int i=0;i<3;i++)
//    {
//        in >> t;
//        for(int j=0;j<t;j++)
//        {
//            in >> x;
//            st[i]=0;
//        }
//        for(int j=0;j<t;j++)
//        {
//            in >> dr[j];
//            st[i]]
//        }
//        in >> c;
//        solve();
//    }
//    int sum=0;
//    for(int i=1;i<=n;i++)
//    {
//        sum+=greu[i];
//        sum+=usor[i];
//    }
//    if(sum>1) out << 0;
//    else
//    {
//        for(int i=1;i<=n;i++)
//        {
//            if(usor[i]==1 || greu[i]==1) {out << i; break;}
//        }
//    }
//    return 0;
//}
//
//
//
//void solve()
//{
//    if(c==0)
//    {
//        for(int i=0;i<t;i++)
//        {
//            usor[st[i]]=0;usor[dr[i]]=0;
//            greu[st[i]]=0;greu[dr[i]]=0;
//        }
//    }
//
//}
//
//void scade(int[] g,int[] u)
//{
//    for(int i=1;i<=n;i++)
//    {
//        if(g[i]==1)
//            greu[i] = 0;
//
//        if(u[i]==1)
//            usor[i] = 0l
//    }
//}