Pagini recente » Cod sursa (job #440248) | Cod sursa (job #1869583) | Cod sursa (job #2213201) | Cod sursa (job #284398) | Cod sursa (job #1641508)
#include <fstream>
using namespace std;
ifstream in("balanta.in");
ofstream out("balanta.out");
const int N = 1025;
int n, k;
int usor[N], greu[N];
int st[N], dr[N];
void update(int rez) {
int i;
if(rez == 0) {
for(i = 1; i <= k; i++) {
usor[st[i]] = greu[st[i]] = 0;
usor[dr[i]] = greu[dr[i]] = 0;
}
}
if(rez == 1) {
for(i = 1; i <= k; i++) {
greu[st[i]]++;
usor[dr[i]]++;
}
for(i = 1; i <= n; i++) {
usor[i] = (usor[i] == 2 ? 1 : 0);
greu[i] = (greu[i] == 2 ? 1 : 0);
}
}
if(rez == 2) {
for(i = 1; i <= k; i++) {
usor[st[i]]++;
greu[dr[i]]++;
}
for(i = 1; i <= n; i++) {
usor[i] = (usor[i] == 2 ? 1 : 0);
greu[i] = (greu[i] == 2 ? 1 : 0);
}
}
}
int fnd() {
int u, g, i;
u = g = 0;
for(i = 1; i <= n; i++) {
if(usor[i] && !u) u = i;
else if(usor[i] && u) return -1;
if(greu[i] && !g) g = i;
else if(greu[i] && g) return -1;
}
if(u && g) return -1;
return (u == 0 ? g : u);
}
int main() {
int m, i, v, rez;
for(i = 1; i < N; i++) usor[i] = greu[i] = 1;
in >> n >> m;
while(m--) {
in >> k;
for(i = 1; i <= k; i++) in >> st[i];
for(i = 1; i <= k; i++) in >> dr[i];
in >> rez;
update(rez);
}
rez = fnd();
out << rez << '\n';
return 0;
}