Cod sursa(job #699262)

Utilizator arch_enemyAngela Gossow arch_enemy Data 29 februarie 2012 18:28:46
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <cstdio>
#include <vector>
#include <cstring>

using namespace std;

#define NMAX 50001
#define pb push_back

int Stiva[NMAX];
vector< int > G[NMAX];
int N, M, i, x, y;
bool Used[NMAX];

inline void Df( int Nod )
{
	Used[Nod] = true;
	
	for( vector< int >::iterator it = G[Nod].begin(); it != G[Nod].end(); ++it )
		if( !Used[*it] )
			Df( *it );
	
	Stiva[ ++Stiva[0] ] = Nod;
}

int main()
{
	freopen("sortaret.in", "r", stdin);
	freopen("sortaret.out", "w", stdout);
	
	scanf("%d%d", &N, &M );
	for( ; M--; )
	{
		scanf("%d%d", &x, &y );
		G[x].pb( y );
	}
	
	memset( Used, false, sizeof(Used) );
	Stiva[0] = 0;
	
	for( i = 1; i <= N; ++i )
		if( !Used[i] )
			Df( i );
	
	for( i = Stiva[0]; i; --i )
		printf("%d ", Stiva[i] );
	printf("\n");
	
	return 0;
}