Cod sursa(job #145274)

Utilizator sima_cotizoSima Cotizo sima_cotizo Data 28 februarie 2008 17:39:43
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define pb push_back

const long MAX=50010;

vector<long> G[MAX];
long Gi[MAX];
bool U[MAX];
long n,m,i;

void df(long x) { 
	if ( U[x] ) return ;
	U[x] = true;
	for_each(G[x].begin(), G[x].end(), df);
	printf("%ld ", x);
}

int main() {
	freopen("sortaret.in", "r", stdin);
	scanf("%ld %ld", &n, &m);
	for (i=0; i<m; ++i) {
		long x,y;
		scanf("%ld %ld", &x, &y);
		G[y].pb(x); Gi[x] ++;
	}

	freopen("sortaret.out", "w", stdout);
	for (i=1; i<=n; ++i)
		if ( !U[i] && Gi[i]==0 )
			df(i);
	return 0;
}