Cod sursa(job #259618)

Utilizator ProtomanAndrei Purice Protoman Data 15 februarie 2009 16:06:16
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <algorithm>
#include <stdio.h>
#include <vector>

#define pb push_back
#define MAX 50010

using namespace std;

int n, m, noduriGs;
int vctNod[MAX], sel[MAX];
vector <int> listaFii[MAX];

void dfs(int nod)
{
	if (sel[nod])
		return;

	sel[nod] = 1;
	for (int i = 0; i < listaFii[nod].size(); i++)
		dfs(listaFii[nod][i]);

	vctNod[noduriGs--] = nod;
}

int main()
{
	freopen("sortaret.in", "r", stdin);
	freopen("sortaret.out", "w", stdout);

	scanf("%d %d", &n, &m);

	for (int i = 1; i <= m; i++)
	{
		int t, f;
		scanf("%d %d", &t, &f);

		listaFii[t].pb(f);
	}

	noduriGs = n;
	for (int i = n; i; i--)
		dfs(i);

	for (int i = 1; i <= n; printf("%d ", vctNod[i]), i++);

	fclose(stdin);
	fclose(stdout);
	return 0;
}