Pagini recente » Cod sursa (job #548313) | Cod sursa (job #370416) | Cod sursa (job #1822602) | Cod sursa (job #859802) | Cod sursa (job #2422963)
#include <iostream>
#include <vector>
#include <queue>
const int NMAX = 50001;
int G[ NMAX ];
std :: vector < int > V[ NMAX ];
std :: vector < int > SortareTopologica( int n ) {
int i, j, x;
std :: queue < int > Q;
std :: vector < int > Sol;
for ( i = 1; i <= n; ++i ) {
if ( G[ i ] == 0 ) {
Q.push( i );
}
}
while ( !Q.empty() ) {
x = Q.front();
Sol.push_back( x );
Q.pop();
for ( int i = 0; i < V[ x ].size(); ++i ) {
G[ V[ x ][ i ] ]--;
if ( G[ V[ x ][ i ] ] == 0 ) {
Q.push( V[ x ][ i ] );
}
}
}
return Sol;
}
int main () {
freopen( "sortaret.in", "r", stdin );
freopen( "sortaret.out", "w", stdout );
int n, m, i, j, x, y;
std :: vector < int > Sortate;
std :: cin >> n >> m;
while ( m-- ) {
std :: cin >> x >> y;
V[ x ] .push_back( y );
G[ y ]++;
}
Sortate = SortareTopologica( n );
for ( int i = 0; i < Sortate.size(); ++i ) {
std :: cout << Sortate[ i ] << " ";
}
return 0;
}