Cod sursa(job #742417)

Utilizator visanrVisan Radu visanr Data 30 aprilie 2012 08:51:18
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.74 kb
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <vector>
using namespace std;


int n, m, k, r, a[1030], b[1030], v1[1030], v2[1030];



int main()
{
    freopen("balanta.in","r",stdin);
    freopen("balanta.out","w",stdout);
    int i;
    scanf("%i %i", &n, &m);
    for(i = 1; i <= n; i++)
    {
          v1[i] = 1;
          v2[i] = 1;
    }
    while(m)
    {
              scanf("%i", &k);
              for(i = 1; i <= k; i++) scanf("%i", &a[i]);
              for(i = 1; i <= k; i++) scanf("%i", &b[i]);
              scanf("%i", &r);
              if(r == 0)
              {
                   for(i = 1; i <= k; i++)
                   {
                          v1[ a[i] ] = 0;
                          v2[ a[i] ] = 0;
                          v1[ b[i] ] = 0;
                          v2[ b[i] ] = 0;
                   }
              }else
              {
                   if(r == 1)
                   {
                        for(i = 1; i <= k; i++)
                        {
                                if(v1[ a[i] ] == 1) v1[ a[i] ] = 2;
                                if(v2[ b[i] ] == 1) v2[ b[i] ] = 2;
                                v2[ a[i] ] = 0;
                                v1[ b[i] ] = 0;
                        }
                        for(i = 1; i <= n; i++)
                        {
                              if(v1[i] == 2) v1[i] = 1;
                              else v1[i] = 0;
                              if(v2[i] == 2) v2[i] = 1;
                              else v2[i] = 0;
                        }
                   }else
                   {
                        for(i = 1; i <= k; i++)
                        {
                                if(v1[ b[i] ] == 1) v1[ b[i] ] = 2;
                                if(v2[ a[i] ] == 1) v2[ a[i] ] = 2;
                                v2[ b[i] ] = 0;
                                v1[ a[i] ] = 0;
                        }
                        for(i = 1; i <= n; i++)
                        {
                              if(v1[i] == 2) v1[i] = 1;
                              else v1[i] = 0;
                              if(v2[i] == 2) v2[i] = 1;
                              else v2[i] = 0;
                        }
                   }
              }
              m--;
    }
    int counter = 0, position = -1;
    for(i = 1; i <= n; ++i)
    {
          if(v1[i] != 0)
          {
                    position = i;
                    counter++;
          }
          if(v2[i] != 0)
          {
                    position = i;
                    counter++;
          }
    }
    if(counter == 1) printf("%i\n", position);
    else printf("0\n");
    return 0;
}