Cod sursa(job #742417)
Utilizator | 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;
}