Pagini recente » Cod sursa (job #2646231) | Cod sursa (job #1326835) | Cod sursa (job #1580260) | Cod sursa (job #1155767) | Cod sursa (job #929456)
Cod sursa(job #929456)
#include<cstdio>
#include<vector>
using std::vector;
static vector<int> v[20005];
static int nr[20005], zr[20005];
static void calc (int n)
{
bool zero=1;
for(vector<int>::iterator it=v[n].begin();it!=v[n].end();it++){
if(nr[*it]==-1)
calc (*it);
if(!nr[*it]){
zr[n]=*it;
zero=0;
break;
}
}
nr[n]=zero ? 0 : v[n].size();
}
int main (void)
{
freopen ("pioni.in","r",stdin);
#ifdef INFOARENA
freopen ("pioni.out","w",stdout);
#endif
int t,n,m;
scanf ("%d%d%d",&t,&n,&m);
while(m--){
int x,y;
scanf ("%d%d",&x,&y);
v[x].push_back (y);
}
for(int i=1;i<=n;i++)
nr[i]=-1;
for(int i=1;i<=n;i++)
if(nr[i]==-1)
calc (i);
while(t--){
int k;
scanf ("%d",&k);
int r=0;
vector<int> nrs;
for(int i=0;i<k;i++){
int x;
scanf ("%d",&x);
nrs.push_back (x);
r^=nr[x];
}
if(r){
puts ("Nargy");
vector<int> sol;
for(vector<int>::iterator it=nrs.begin();it!=nrs.end();it++)
if(nr[*it])
sol.push_back (*it);
printf ("%lu ",sol.size());
for(vector<int>::iterator it=sol.begin();it!=sol.end();it++)
printf ("%d %d ", *it, zr[*it]);
puts ("");
} else
puts ("Fumeanu");
}
return 0;
}