Pagini recente » Cod sursa (job #2493220) | Cod sursa (job #315367) | Cod sursa (job #30074) | Cod sursa (job #1379893) | Cod sursa (job #2060381)
#include <cstdio>
#include <vector>
const int MAX_N = 20000;
std::vector<int> v[MAX_N];
bool viz[MAX_N];
bool win[MAX_N];
int root[MAX_N];
void dfs(int node) {
viz[node] = true;
for (auto u : v[node]) {
dfs(u);
if (!win[u]) {
win[node] = true;
root[node] = u;
}
}
}
int main() {
freopen("pioni.in", "r", stdin);
freopen("pioni.out", "w", stdout);
int T, N, M;
scanf("%d%d%d", &T, &N, &M);
for (int i = 0; i < M; i++) {
int a, b;
scanf("%d%d", &a, &b);
a--;
b--;
v[a].push_back(b);
}
for (int i = 0; i < N; i++) {
if (!viz[i]) {
dfs(i);
}
}
for (int t = 0; t < T; t++) {
int K;
scanf("%d", &K);
std::vector<int> moves;
for (int i = 0; i < K; i++) {
int x;
scanf("%d", &x);
x--;
if (win[x]) {
moves.push_back(x);
}
}
if (moves.size() == 0) {
printf("Fumeanu\n");
} else {
printf("Nargy\n%d ", (int)moves.size());
for (auto it : moves) {
printf("%d %d ", it + 1, root[it] + 1);
}
printf("\n");
}
}
return 0;
}