Pagini recente » Cod sursa (job #310916) | Cod sursa (job #685178) | Cod sursa (job #2031506) | Cod sursa (job #1176855) | Cod sursa (job #906551)
Cod sursa(job #906551)
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
#define Nmax 20010
#define pb push_back
#define IT vector<int> :: iterator
bool Win[Nmax], Used[Nmax];
int Next[Nmax], N, M, T, A, B, K;
vector<int> G[Nmax], Ans;
int DFS(int Node)
{
if(Used[Node]) return Win[Node];
Win[Node] = 0;
Used[Node] = 1;
for(IT it = G[Node].begin(); it != G[Node].end(); ++it)
if(!DFS(*it))
{
Win[Node] = 1;
Next[Node] = *it;
}
return Win[Node];
}
int main()
{
freopen("pioni.in", "r", stdin);
freopen("pioni.out", "w", stdout);
int i, j;
scanf("%i %i %i", &T, &N, &M);
for(i = 1; i <= M; i++)
{
scanf("%i %i", &A, &B);
G[A].pb(B);
}
for(i = 1; i <= N; i++)
if(!Used[i])
DFS(i);
for(i = 1; i <= T; i++)
{
scanf("%i", &K);
Ans.clear();
for(j = 1; j <= K; j ++)
{
scanf("%i", &A);
if(Win[A])
Ans.pb(A);
}
if(Ans.size())
{
printf("Nargy\n");
printf("%i ", Ans.size());
for(j = 0; j < Ans.size(); j++)
printf("%i %i ", Ans[j], Next[Ans[j]]);
printf("\n");
}else printf("Fumeanu\n");
}
return 0;
}