Pagini recente » Cod sursa (job #1733935) | Cod sursa (job #444646) | Cod sursa (job #534241) | Cod sursa (job #1615480) | Cod sursa (job #26932)
Cod sursa(job #26932)
#include <stdio.h>
#include <string.h>
#define NMAX 1024
int H[NMAX], L[NMAX], Hn[NMAX], Ln[NMAX];
int A[NMAX], B[NMAX];
int i, j, N, M, c, nr, ob;
int main()
{
freopen("balanta.in", "r", stdin);
freopen("balanta.out", "w", stdout);
scanf("%d %d", &N, &M);
Hn[0] = Ln[0] = N;
for (i = 1; i <= N; i++) Hn[i] = Ln[i] = i;
for (i = 1; i <= M; i++)
{
memset(A, 0, sizeof(A));
memset(B, 0, sizeof(B));
memset(H, 0, sizeof(H));
memset(L, 0, sizeof(L));
scanf("%d", &nr);
for (j = 1; j <= nr; j++) scanf("%d", &ob), A[ob] = 1;
for (j = 1; j <= nr; j++) scanf("%d", &ob), B[ob] = 1;
scanf("%d", &c);
if (c == 0)
{
for (j = 1; j <= Hn[0]; j++)
if (!A[Hn[j]] && !B[Hn[j]]) H[++H[0]] = Hn[j];
for (j = 1; j <= Ln[0]; j++)
if (!A[Ln[j]] && !B[Ln[j]]) L[++L[0]] = Ln[j];
}
if (c == 1)
{
for (j = 1; j <= Hn[0]; j++)
if (A[Hn[j]]) H[++H[0]] = Hn[j];
for (j = 1; j <= Ln[0]; j++)
if (B[Ln[j]]) L[++L[0]] = Ln[j];
}
if (c == 2)
{
for (j = 1; j <= Hn[0]; j++)
if (B[Hn[j]]) H[++H[0]] = Hn[j];
for (j = 1; j <= Ln[0]; j++)
if (A[Ln[j]]) L[++L[0]] = Ln[j];
}
memcpy(Hn, H, sizeof(H));
memcpy(Ln, L, sizeof(L));
}
if (Ln[0] + Hn[0] != 1) { printf("0\n"); return 0; }
if (Ln[0] == 1 && Hn[0] == 0) printf("%d\n", Ln[1]);
if (Ln[0] == 0 && Hn[0] == 1) printf("%d\n", Hn[1]);
return 0;
}