Pagini recente » Cod sursa (job #2871237) | Cod sursa (job #695198) | Cod sursa (job #663132) | Cod sursa (job #1545127) | Cod sursa (job #811427)
Cod sursa(job #811427)
#include <cstdio>
#include <set>
#define NMAX 1026
using namespace std;
set <long> Greu , Usor;
long St [NMAX];
long Dr [NMAX];
long inter [NMAX];
int main () {
long n , m , i , j , r , k , Greu_size , Usor_size;
freopen ("balanta.in" , "r" , stdin);
freopen ("balanta.out" , "w" , stdout);
scanf ("%ld%ld" , &n , &m);
for (i = 1 ; i <= n ; i ++) {
Greu.insert (i);
Usor.insert (i);
}
for (i = 1 ; i <= n ; i ++) {
scanf ("%ld" , &k);
for (j = 1 ; j <= k ;j ++)
scanf ("%ld" , &St[j]);
for (j = 1 ; j <= k ;j ++)
scanf ("%ld" , &Dr[j]);
scanf ("%ld" , &r);
if (r == 0)
for (j = 1 ; j <= k ; j ++) {
Greu.erase (St[j]);
Usor.erase (St[j]);
Greu.erase (Dr[j]);
Usor.erase (Dr[j]);
}
if (r==1) {
inter [0] = 0;
for (j = 1 ; j <= k ; j ++)
if (Greu.find (St [j]) != Greu.end ())
inter [++ inter [0]] = St[j];
Greu.clear ();
for (j = 1 ; j <= inter [0] ; j ++)
Greu.insert (inter [j]);
inter [0] = 0;
for (j = 1 ; j <= k ; j ++)
if (Usor.find (Dr [j])!= Usor.end ())
inter [++ inter [0]] = Dr[j];
Usor.clear ();
for (j = 1 ; j <= inter [0] ; j ++)
Usor.insert (inter [j]);
}
if (r==2) {
inter [0] = 0;
for (j = 1 ; j <= k ; j ++)
if (Greu.find (Dr [j]) != Greu.end ())
inter [++ inter [0]] = Dr[j];
Greu.clear ();
for (j = 1 ; j <= inter [0] ; j ++)
Greu.insert (inter [j]);
inter [0] = 0;
for (j = 1 ; j <= k ; j ++)
if (Usor.find (St [j]) != Usor.end ())
inter [++ inter [0]] = St[j];
Usor.clear ();
for (j = 1 ; j <= inter [0] ; j ++)
Usor.insert (inter [j]);
}
}
Greu_size = Greu.size ();
Usor_size = Usor.size ();
if (Greu_size + Usor_size >= 2 || Greu_size + Usor_size == 0)
printf ("0\n");
else {
if (Greu_size == 1)
printf ("%ld\n" , (*Greu.begin ()));
else printf ("%ld\n" , (*Usor.begin ()));
}
return 0;
}