Cod sursa(job #245855)

Utilizator ilincaSorescu Ilinca ilinca Data 19 ianuarie 2009 01:06:07
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>
#include <vector>

#define nmax 50005
#define mmax 100005

using namespace std;


int n, m, f, o [nmax];
vector <int> g [nmax];
vector <bool> v (nmax);

void scan ()
{
	int i, a, b;
	scanf ("%d%d", &n, &m);
	for (i=1; i <= m; ++i)
	{
		scanf ("%d%d", &a, &b);
		g [a].push_back (b);
		v [b]=true;	
	}
}

int first ()
{
	int i;
	for (i=1; i <= n; ++i)
		if (v [i] == false)
			return i;
	return 0;
}

void sort_t (int nod)
{
	vector <int>::iterator it;
	o [++o [0]]=nod;
	for (it=g [nod].begin (); it != g [nod].end (); ++it)	
		sort_t (*it);
}

void print ()
{
	int i;
	for (i=1; i <= o [0]; ++i)
		printf ("%d ", o [i]);
	printf ("\n");
}

int main ()
{
	freopen ("sortaret.in", "r", stdin);
	freopen ("sortaret.out", "w", stdout);
	scan ();
	f=first ();
	sort_t (f);
	print ();
	return 0;
}