Cod sursa(job #312458)

Utilizator diannaDiaconu Diana dianna Data 6 mai 2009 08:59:41
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<fstream.h>
ifstream f("sortaret.in");
ofstream g("sortaret.out");
#define Nmax 50010
int n,m,viz[Nmax],sol[Nmax],k;
struct elem
{
	int inf;
	elem *urm;
}*a[Nmax];

void citire()
{
	f>>n>>m;
	for(int i=0;i<m;i++)
	{
		int x,y;
		f>>x>>y;
		elem *p=new elem;
		p->inf=y;
		p->urm=a[x];
		a[x]=p;
	}
}

void parcurg(int vf)
{
	viz[vf]=1;
	for(elem *p=a[vf];p;p=p->urm)
		if(viz[p->inf]==0)
			parcurg(p->inf);
	sol[k++]=vf;
}

int main()
{
	citire();
	for(int i=1;i<=n;i++)
		if(viz[i]==0)
			parcurg(i);
	for(int i=k-1;i>=0;i--)
		g<<sol[i]<<" ";
	g.close();
	return 0;
}