Cod sursa(job #703689)

Utilizator Catah15Catalin Haidau Catah15 Data 2 martie 2012 13:42:59
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>

using namespace std;

#define maxN 50010
#define PB push_back

bool Viz[maxN];
vector <int> G[maxN], Q;


void DFS (int nod)
{
	vector <int> :: iterator it;
	Viz[nod] = true;
	
	for (it = G[nod].begin(); it != G[nod].end(); ++ it)
	{
		if (Viz[*it]) continue;
		
		DFS (*it);
	}
	
	Q.PB (nod);
}


int main()
{
	freopen ("sortaret.in", "r", stdin);
	freopen ("sortaret.out", "w", stdout);
	
	vector <int> :: iterator it;
	int N, M;

	scanf ("%d %d", &N, &M);
	
	while (M --)
	{
		int x, y;
		
		scanf ("%d %d", &x, &y);
		
		G[x].PB (y);
	}
	
	DFS (1);

	for (it = Q.end() - 1; it != Q.begin() - 1; -- it) printf ("%d ", *it);
	
	return 0;
}