Cod sursa(job #599029)

Utilizator igsifvevc avb igsi Data 27 iunie 2011 20:11:24
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

struct lista
{
	int vf;
	lista *urm;
} *graf[50001], *stiva;

int n, m, vizit[50001];

void parcurgere(int i)
{
	vizit[i] = 1;
	
	for(lista *c = graf[i]; c != NULL; c = c->urm)
		if(vizit[c->vf] == 0)
			parcurgere(c->vf);
	
	lista *t;
	t = new lista;
	t->vf = i;
	t->urm = stiva;
	stiva = t;
}

int main()
{	
	fin >> n >> m;
	
	int a, b;
	lista *c;
	for(int i = 0; i < m; i++)
	{
		c = new lista;
		fin >> a >> b;
		
		c->vf = b;
		c->urm = graf[a];
		graf[a] = c;
	}
	
	for(int i = 1; i <= n; i++)
		if(vizit[i] == 0)
			parcurgere(i);
	
	for(c = stiva; c != NULL; c = c->urm)
		fout << c->vf << ' ';
	fout << '\n';
		
	fin.close();
	fout.close();
	return 0;
}