Pagini recente » Cod sursa (job #955091) | Cod sursa (job #1072540) | Cod sursa (job #2014998) | Cod sursa (job #657556) | Cod sursa (job #475053)
Cod sursa(job #475053)
#include <algorithm>
#include <stdio.h>
#include <vector>
#define MAX 100010
#define pb push_back
using namespace std;
int testCases, n, m;
int sg[MAX], fiu[MAX];
vector <int> vctDrum[MAX];
inline void mex(int nod)
{
if (sg[nod] != -1)
return;
sg[nod] = 0;
fiu[nod] = nod;
for (int i = 0; i < vctDrum[nod].size(); i++)
{
mex(vctDrum[nod][i]);
if (!sg[vctDrum[nod][i]])
{
sg[nod] = 1;
fiu[nod] = vctDrum[nod][i];
}
}
}
int main()
{
freopen("pioni.in", "r", stdin);
freopen("pioni.out", "w", stdout);
scanf("%d %d %d", &testCases, &n, &m);
for (int i = 0; i < m; i++)
{
int n1, n2;
scanf("%d %d", &n1, &n2);
vctDrum[n1].pb(n2);
}
for (int i = 1; i <= n; i++)
sg[i] = -1;
for (int i = 1; i <= n; i++)
mex(i);
for (; testCases; testCases--)
{
int k, ok = 1;
scanf("%d", &k);
vector <int> vctEl;
for (int i = 1; i <= k; i++)
{
int nod;
scanf("%d", &nod);
if (sg[nod])
{
ok = 0;
vctEl.pb(nod);
}
}
if (ok)
printf("Fumeanu\n");
else
{
printf("Nargy\n");
printf("%d", vctEl.size());
for (int i = 0; i < vctEl.size(); i++)
printf(" %d %d", vctEl[i], fiu[vctEl[i]]);
printf("\n");
}
}
fclose(stdin);
fclose(stdout);
return 0;
}