Pagini recente » Cod sursa (job #2887831) | Cod sursa (job #137515) | Cod sursa (job #2040996)
#include <bits/stdc++.h>
#define MAX_N 1024
#define MAX_M 1024
using namespace std;
FILE *f, *g;
int n, m;
bitset<MAX_N + 1> usor;
bitset<MAX_N + 1> greu;
bitset<MAX_N + 1> a, b;
void readFile()
{
f = fopen("balanta.in", "r");
fscanf(f, "%d%d", &n, &m);
int i;
for(i = 1; i <= n; i ++)
greu[i] = usor[i] = 1;
int k;
for(i = 1; i <= m; i ++)
{
fscanf(f, "%d", &k);
a &= 0;
b &= 0;
int j;
int nr;
for(j = 1; j <= k; j ++)
{
fscanf(f, "%d", &nr);
a[nr] = 1;
}
for(j = 1; j <= k; j ++)
{
fscanf(f, "%d", &nr);
b[nr] = 1;
}
int rez;
fscanf(f, "%d", &rez);
if(rez == 0)
{
a = ~(a | b);///1 sunt suspecti, 0 liberi
usor &= a;
greu &= a;
}
if(rez == 1)
{
greu &= a;
usor &= b;
}
if(rez == 2)
{
greu &= b;
usor &= a;
}
}
fclose(f);
}
int rez;
void solve()
{
int aps = 0;
int i;
for(i = 1; i <= n; i ++)
{
if(usor[i] || greu[i])
{
aps ++;
rez = i;
}
}
if(aps != 1)
rez = 0;
}
void printFile()
{
g = fopen("balanta.out", "w");
fprintf(g, "%d\n", rez);
fclose(g);
}
int main()
{
readFile();
solve();
printFile();
return 0;
}