Pagini recente » Cod sursa (job #2522222) | Cod sursa (job #1043482) | Cod sursa (job #119683) | Cod sursa (job #901450) | Cod sursa (job #138012)
Cod sursa(job #138012)
#include <stdio.h>
#include <string.h>
#include <vector>
#define nmax 20005
#define sgmax 1000
#define kmax 30005
using namespace std;
int k, t, n, m, n1, n2, sg[nmax], rez, aux;
int a[kmax];
char v[nmax];
vector <int> e[nmax];
void dfs(int x)
{
v[x] = 1;
sg[x] = 0;
for(int i = 0; i < (int)e[x].size(); i++)
if(!v[e[x][i]]) dfs(e[x][i]);
sg[x] = 0;
for(int i = 0; i < (int)e[x].size(); i++)
if(sg[e[x][i]] == 0) sg[x] = 1;
}
int main()
{
freopen("pioni.in", "r", stdin);
freopen("pioni.out", "w", stdout);
scanf("%d%d%d", &t, &n, &m);
for(int i = 1; i <= m; i++)
{
scanf("%d%d", &n1, &n2);
e[n1].push_back(n2);
}
memset(v, 0, sizeof(v));
for(int i = 1; i <= n; i++)
if(!v[i]) dfs(i);
for(int i = 1; i <= t; i++)
{
scanf("%d", &k);
rez = 0;
int cate = 0;
for(int j = 1; j <= k; j++)
{
scanf("%d", &a[j]);
if(sg[a[j]]) cate++;
}
if(cate == 0) printf("Fumeanu\n");
else
{
printf("Nargy\n");
printf("%d ", cate);
for(int j = 1; j <= k; j++)
if(sg[a[j]] == 1)
{
printf("%d ", a[j]);
int where = 0;
for(int l = 0; l < (int)e[a[j]].size(); l++)
if(sg[e[a[j]][l]] == 0)
{
where = e[a[j]][l];
break;
}
printf("%d ", where);
}
printf("\n");
}
}
return 0;
}