Cod sursa(job #718721)
Utilizator | Data | 21 martie 2012 00:31:53 | |
---|---|---|---|
Problema | Balanta | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.61 kb |
#include <cstdio>
#define MAXN 1026
int a[MAXN], b[MAXN], g[MAXN], u[MAXN];
int n, m;
void c(int g[], int u[])
{
for(int j=1;j<=n;++j)
{
if(u[j] == 2)
{
u[j] = 0;
}
else
{
u[j] = 1;
}
if(g[j] == 2)
{
g[j] = 0;
}
else
{
g[j] = 1;
}
}
}
int main()
{
freopen("balanta.in", "r", stdin);
freopen("balanta.out", "w", stdout);
scanf("%d %d", &n, &m);
for(int i=0;i<m;++i)
{
int nr, r;
scanf("%d", &nr);
for(int j=0;j<nr;++j)
{
scanf("%d", &a[j]);
}
for(int j=0;j<nr;++j)
{
scanf("%d", &b[j]);
}
scanf("%d", &r);
switch(r)
{
case 0:
for(int j=0;j<nr;++j)
{
u[a[j]] = u[b[j]] = g[a[j]] = g[b[j]] = 1;
}
break;
case 1:
for(int j=0;j<nr;++j)
{
if(g[a[j]] == 0)
{
g[a[j]] = 2;
}
}
for(int j=0;j<nr;++j)
{
if(u[b[j]] == 0)
{
u[b[j]] = 2;
}
}
c(g, u);
break;
case 2:
for(int j=0;j<nr;++j)
{
if(g[b[j]] == 0)
{
g[b[j]] = 2;
}
}
for(int j=0;j<nr;++j)
{
if(u[a[j]] == 0)
{
u[a[j]] = 2;
}
}
c(g, u);
break;
}
}
int nru = 0, nrg = 0, nu, ng;
for(int i=1;i<=n;++i)
{
if(!u[i])
{
++nru;
nu = i;
}
if(!g[i])
{
++nrg;
ng = i;
}
}
if(nru == 1 && nrg == 0)
{
printf("%d\n", nu);
return 0;
}
if(nru == 0 && nrg == 1)
{
printf("%d\n", ng);
return 0;
}
if(nru == 1 && nrg == 1 && nu == ng)
{
printf("%d\n", ng);
return 0;
}
printf("0\n");
return 0;
}