Pagini recente » Cod sursa (job #2771004) | Cod sursa (job #1642860) | Cod sursa (job #2707775) | Cod sursa (job #2923047) | Cod sursa (job #1281111)
#include<stdio.h>
#include<vector>
using namespace std;
#define ITERATOR vector<int>::iterator
const int NMAX = 20005;
vector <int> graph[NMAX], sol;
bool win[NMAX], vis[NMAX];
int son[NMAX], in[NMAX];
void dfs (int node) {
vis[node] = 1;
for(ITERATOR it = graph[node].begin(); it != graph[node].end(); ++ it) {
if(!vis[*it])
dfs(*it);
if(!win[*it]) {
win[node] = 1;
son[node] = *it;
}
}
}
int main() {
freopen("pioni.in", "r", stdin);
freopen("pioni.out", "w", stdout);
int nTests, test, n, m, i, x, y;
scanf("%d%d%d", &nTests, &n, &m);
for(i = 1; i <= m; ++ i) {
scanf("%d%d", &x, &y);
graph[x].push_back(y);
++ in[y];
}
for(i = 1; i <= n; ++ i)
if(!in[i])
dfs(i);
for(test = 1; test <= nTests; ++ test) {
scanf("%d", &n);
sol.clear();
for(i = 1; i <= n; ++ i) {
scanf("%d", &x);
if(win[x])
sol.push_back(x);
}
if(sol.size()) {
printf("Nargy\n%d", sol.size());
for(ITERATOR it = sol.begin(); it != sol.end(); ++ it)
printf(" %d %d", *it, son[*it]);
printf("\n");
}
else
printf("Fumeanu\n");
}
return 0;
}