Pagini recente » Cod sursa (job #259754) | Cod sursa (job #605684) | Cod sursa (job #717585) | Cod sursa (job #1927701) | Cod sursa (job #1247727)
#include <fstream>
#include <vector>
using namespace std;
ifstream is("pioni.in");
ofstream os("pioni.out");
#define DIM 20001
int T, N, M, x, y, K;
vector <int> G[DIM];
vector <pair<int,int> > FirstM;
bool Vis[DIM];
int D[DIM];
int Move[DIM];
void Input();
void DFS(int node);
void Query();
int main()
{
Input();
for ( int i = 1; i <= N; ++i )
if ( Vis[i] == 0)
DFS(i);
for ( int i = 1; i <= T; ++i )
{
FirstM.clear();
Query();
}
is.close();
os.close();
}
void Input()
{
is >> T >> N >> M;
for ( int i = 1; i <= M; ++i )
{
is >> x >> y;
G[x].push_back(y);
}
}
void DFS(int node)
{
Vis[node] = 1;
for ( vector<int>::iterator it = G[node].begin(); it != G[node].end(); ++it )
{
if ( !Vis[*it] )
DFS(*it);
if ( !D[*it] )
{
D[node] = 1;
Move[node] = *it;
}
}
}
void Query()
{
is >> N;
for ( int i = 1; i <= N; ++i )
{
is >> x;
if ( D[x] == 1 )
FirstM.push_back(make_pair(x,Move[x]));
}
if ( FirstM.size() )
{
os << "Nargy\n";
os << FirstM.size() << " ";
for ( int j = 0; j < FirstM.size(); ++j )
os << FirstM[j].first << " " << FirstM[j].second << " ";
os << '\n';
}
else
os << "Fumeanu\n";
}