Cod sursa(job #2218843)
Utilizator | Data | 5 iulie 2018 23:47:57 | |
---|---|---|---|
Problema | Balanta | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.46 kb |
#include <bits/stdc++.h>
#define NMAX 1025
using namespace std;
ifstream fin("balanta.in");
ofstream fout("balanta.out");
int n, m, k, st[NMAX], dr[NMAX], ans[NMAX], x, ct, r;
bool sem = true;
int main()
{
fin >> n >> m;
for(int i = 1; i <= m; i++)
{
fin >> k;
for(int j = 1; j <= k; j++)
fin >> st[j];
for(int j = 1; j <= k; j++)
fin >> dr[j];
fin >> r;
if(sem)
for(int j = 1; j <= k; j++)
{
ct = 0;
if(r == 0)
ans[st[j]] = -1, ans[st[j]] = -1;
else
if(r == 1)
{
if(ans[st[j] == 2])
ans[st[j]] = -1;
else
if(ans[st[j]] == 0)
ans[st[j]] = 1;
if(ans[dr[j]] == 1)
ans[dr[j]] = -1;
else
if(ans[dr[j]] == 0)
ans[dr[j]] = 2;
if(ans[st[j]] == 1)
ct++, x = st[j];
if(ans[dr[j]] == 2)
ct++, x = dr[j];
}
else
if(r == 2)
{
if(ans[st[j]] == 1)
ans[st[j]] = -1;
else
if(ans[st[j]] == 0)
ans[st[j]] = 2;
if(ans[dr[j]] == 2)
ans[dr[j]] = -1;
else
if(ans[dr[j]] == 0)
ans[dr[j]] = 1;
if(ans[st[j]] == 2)
ct++, x = st[j];
if(ans[dr[j]] == 1)
ct++, x = dr[j];
}
}
if(ct == 1)
{
sem = false;
}
}
ct = 0;
if(sem)
{
for(int i = 1; i <= n; i++)
if(ans[i] != -1)
ct++, x = i;
if(ct == 1)
fout << x;
else
fout << 0;
}
else
fout << x;
return 0;
}