Pagini recente » Cod sursa (job #2252998) | Cod sursa (job #1396823) | Cod sursa (job #1346401) | Cod sursa (job #2552599) | Cod sursa (job #1339899)
/*
* Code by Spiromanul
*/
# include "fstream"
# include "cstring"
# include "vector"
# include "queue"
# include "bitset"
# include "algorithm"
# include "deque"
const char IN [ ] = "pioni.in" ;
const char OUT [ ] = "pioni.out" ;
const int MAX = 20222 ;
# define pb push_back
# define mp make_pair
# define FORN( a , b , c ) for ( int a = b ; a <= c ; ++ a )
# define FORNBACK( a , b , c ) for ( int a = b ; a >= c ; -- a )
using namespace std;
ifstream cin ( IN ) ;
ofstream cout ( OUT ) ;
vector < int > gr [ MAX ] ;
vector < int > sol ;
bitset < MAX > viz ;
bitset < MAX > can_win ;
int boss [ MAX ] ;
inline void dfs ( int nod )
{
viz [ nod ] = 1 ;
for ( auto x : gr [ nod ] ) {
if ( viz [ x ] == 0 )
dfs ( x ) ;
if ( can_win [ x ] == 0 ){
can_win [ nod ] = 1 ;
boss [ nod ] = x ;
}
}
}
int main ( void )
{
int t , n , m ;
cin >> t >> n >> m ;
FORN ( i , 1 , m )
{
int x , y ;
cin >> x >> y ;
gr [ x ].pb ( y ) ;
}
FORN ( i , 1 , n ) if ( viz [ i ] == 0 ) dfs ( i ) ;
FORN ( q , 1 , t )
{
sol.clear ( ) ;
int k ;
cin >> k ;
FORN ( i , 1 , k )
{
int x ;
cin >> x ;
if ( can_win [ x ] )
sol.pb ( x ) ;
}
if ( sol.size ( ) )
{
cout << "Nargy\n" ;
cout << sol.size ( ) << ' ' ;
for ( auto w : sol )
cout << w << ' ' << boss [ w ] << ' ' ;
cout << '\n' ;
}
else cout << "Fumeanu\n" ;
}
return 0;
}