Pagini recente » Cod sursa (job #696275) | Clasament igorj_10 | Viata de dupa olimpiade (partea II) | Cod sursa (job #2730457) | Cod sursa (job #1960406)
#include <bits/stdc++.h>
#define maxN 20002
using namespace std;
FILE *fin = freopen("pioni.in", "r", stdin);
FILE *fout = freopen("pioni.out", "w", stdout);
/* ====================== */
int n, m, k, t;
vector < int > V[maxN], T[maxN];
/* ====================== */
bool win[maxN];
int vis[maxN];
int st[maxN];
/* ====================== */
int ans[maxN];
void dfs(int nod)
{
vis[nod] = 1;
win[nod] = 0;
for (int son : V[nod])
{
if (!win[son])
{
win[nod] = 1;
st[nod] = son;
}
if (!vis[son])
dfs(son);
}
}
int main()
{
scanf("%d %d %d", &t, &n, &m);
for (int i = 1; i <= m; ++ i)
{
int x, y;
scanf("%d %d", &x, &y);
V[x].push_back(y);
}
for (int i = 1; i <= n; ++ i)
dfs(i);
while (t --)
{
scanf("%d", &k);
ans[0] = 0;
while (k --)
{
int nod;
scanf("%d", &nod);
if (win[nod])
ans[++ ans[0]] = nod;
}
if (!ans[0])
printf("Fumeanu\n");
else
{
printf("Nargy\n%d ", ans[0]);
for (int i = 1; i <= ans[0]; ++ i)
printf("%d %d ", ans[i], st[ans[i]]);
printf("\n");
}
}
return 0;
}