Cod sursa(job #281262)

Utilizator cotofanaCotofana Cristian cotofana Data 13 martie 2009 23:26:54
Problema Sortare topologica Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <cstdio>
#include <vector>
#define dim 50100

using namespace std;

int n, m;
vector<int> g[dim], l;
bool fol[dim];

void dfs(int x)
{
	fol[x]=true;
	for (vector<int>::iterator it=g[x].begin(); it!=g[x].end(); ++it)
		if (!fol[*it]) dfs(*it);
	l.insert(l.begin(), x);
}

int main()
{
	int a, b;
	freopen("sortaret.in", "r", stdin);
	freopen("sortaret.out", "w", stdout);
	scanf("%d %d\n", &n, &m);
	for (; m; m--)
	{
		scanf("%d %d\n", &a, &b);
		g[a].push_back(b);
	}
	for (int i=1; i<=n; i++)
		if (!fol[i]) dfs(i);
	for (vector<int>::iterator it=l.begin(); it!=l.end(); ++it)
		printf("%d ", *it);
	return 0;
}