Cod sursa(job #563181)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 24 martie 2011 17:23:45
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <vector>
using namespace std;

//ifstream fi ("sortaret.in");
//ofstream fo ("sortaret.out");

const int DIM = 50005;
int N, M, viz[DIM], R[DIM];
vector <int> V[DIM];

void dfs (int n)
{
	R[++R[0]] = n;
	viz[n] = 1;
	for (int i = 0, f; i < (int)V[n].size(); i++)
	{
		f = V[n][i];
		if (!viz[f])
			dfs (f);
	}	
}

int main ()
{
	freopen ("sortaret.in", "r", stdin);
	freopen ("sortaret.out", "w", stdout);
	
	scanf ("%d%d", &N, &M);
	//fi >> N >> M;
	for (int i = 0, a, b; i < M; i++)
	{
		scanf ("%d%d", &a, &b);
		//fi >> a >> b;
		V[a].push_back (b);		
	}
	
	for (int i = 1; i <= N; i++)
		if (!viz[i])
			dfs (i);
	
	for (int i = 1; i <= R[0]; i++)
		printf ("%d ", R[i]);
		//fo << R[i] << ' ';
	return 0;
}