Pagini recente » Cod sursa (job #2186063) | Cod sursa (job #2106709) | Cod sursa (job #1217886) | Cod sursa (job #2852680) | Cod sursa (job #25812)
Cod sursa(job #25812)
#include <stdio.h>
#include <bitset>
using namespace std;
#define NMAX 1100
int N, M;
int rez[NMAX];
bitset <NMAX> a[NMAX];
bitset <NMAX> b[NMAX];
char bun[NMAX];
int ver(int x, int g)
{
int i;
for (i = 1; i <= M; i++) {
if (!a[i][x] && !b[i][x]) if (rez[i] != 0) return 0;
if (a[i][x]) {
if (g == -1) if (rez[i] != 2) return 0;
if (g == 1) if (rez[i] != 1) return 0;
}
if (b[i][x]) {
if (g == -1) if (rez[i] != 1) return 0;
if (g == 1) if (rez[i] != 2) return 0;
}
}
return 1;
}
int main()
{
int i, j, q, w;
freopen("balanta.in", "r", stdin);
freopen("balanta.out", "w", stdout);
scanf("%d %d", &N, &M);
for (i = 1; i <= M; i++) {
scanf("%d", &q);
for (j = 1; j <= q; j++) {
scanf("%d", &w);
a[i][w] = 1;
}
for (j = 1; j <= q; j++) {
scanf("%d", &w);
b[i][w] = 1;
}
scanf("%d", &rez[i]);
}
for (i = 1; i <= N; i++) {
if (ver(i, -1)) bun[i] = 1;
if (ver(i, 1)) bun[i] = 1;
}
int nrez = 0;
for (i = 1; i <= N; i++) nrez += bun[i];
if (nrez != 1) {
printf("0\n");
return 0;
}
for (i = 1; i <= N; i++) if (bun[i]) break;
printf("%d\n", i);
fclose(stdin);
fclose(stdout);
return 0;
}