Pagini recente » Cod sursa (job #2543238) | Cod sursa (job #1156590) | Cod sursa (job #1486594) | Cod sursa (job #1804989) | Cod sursa (job #2351731)
#include <bits/stdc++.h>
#define MAXN 20005
int T, N, M;
std::vector <int> ADC[MAXN];
inline void AddEdge(int X, int Y) {
ADC[X].push_back(Y);
}
int Mem[MAXN];
bool Seen[MAXN], DP[MAXN];
void DFS(int Vertex) {
Seen[Vertex] = 1;
for (auto Edge:ADC[Vertex]) {
if (!Seen[Edge])
DFS(Edge);
if (!DP[Edge])
DP[Vertex] = 1, Mem[Vertex] = Edge;
}
}
std::ifstream In ("pioni.in");
std::ofstream Out("pioni.out");
void Citire() {
In >> T >> N >> M;
for (int i=1, X, Y; i<=M; ++i)
In >> X >> Y, AddEdge(X, Y);
}
void Rezolvare() {
for (int i=1; i<=N; ++i)
if (!Seen[i])
DFS(i);
int K, Arr[MAXN];
bool Flag;
while (T--) {
In >> K;
Flag = 1;
for (int i=1; i<=K; ++i) {
In >> Arr[i];
Flag &= (DP[Arr[i]]);
}
if (Flag) {
Out << "Nargy\n";
int Count = 0;
for (int i=1; i<=K; ++i)
if (DP[Arr[i]])
++ Count;
Out << Count << ' ';
for (int i=1; i<=K; ++i)
if (DP[Arr[i]])
Out << Arr[i] << ' ' << Mem[Arr[i]] << ' ';
Out << '\n';
}
else {
Out << "Fumeanu\n";
}
}
}
int main()
{
Citire();
Rezolvare();
return 0;
}