Pagini recente » Cod sursa (job #1237662) | Cod sursa (job #1935813) | Cod sursa (job #2103694) | Cod sursa (job #984458) | Cod sursa (job #2425638)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
const int NMAX = 50001;
int Grad[ NMAX ];
vector < int > V[ NMAX ];
vector < int > SortareTopologica ( int n ) {
vector < int > sol;
queue < int > Q;
for ( int i = 1; i <= n; ++i ) {
if ( Grad[ i ] == 0 ) {
Q.push( i );
}
}
while( !Q.empty() ) {
int nod = Q.front();
sol.push_back( nod );
Q.pop();
for ( int i = 0; i < V[ nod ].size(); ++i ) {
Grad[ V[ nod ][ i ] ]--;
if ( Grad[ V[ nod ][ i ] ] == 0 ) {
Q.push( V[ nod ][ i ] );
}
}
}
return sol;
}
int main () {
freopen( "sortaret.in", "r", stdin );
freopen( "sortaret.out", "w", stdout );
int n, m, i, j;
int x, y;
scanf( "%d%d", &n,&m );
while ( m-- ) {
scanf( "%d%d", &x,&y );
V[ x ].push_back( y );
Grad[ y ]++;
}
vector < int > Sortate = SortareTopologica( n );
for ( int i = 0; i < n; ++i ) {
printf( "%d ", Sortate[ i ] );
}
return 0;
}