Cod sursa(job #147687)

Utilizator ProtomanAndrei Purice Protoman Data 3 martie 2008 13:21:12
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
struct nod
{
	long nr;
	nod *ua;
} *l[50010],*lf;
long i,n,m,t,f;
char s[50010];

void dfs(int nd)
{
	nod *p;
	s[nd]=1;
	p=l[nd];
	while (p)
	{
		if (s[p->nr]==0)
			dfs(p->nr);
		p=p->ua;
	}
	p=new nod;
	p->nr=nd;
	p->ua=lf;
	lf=p;
}

void clad(int t, int f)
{
	nod *p;
	p=new nod;
	p->nr=f;
	p->ua=l[i];
	l[i]=p;
}

int main()
{
	freopen("sortaret.in","r",stdin);
	freopen("sortaret.out","w",stdout);
	scanf("%ld %ld",&n,&m);
	for (i=1; i<=m; i++)
	{
		scanf("%ld %ld",&t,&f);
		clad(t,f);
	}
	for (i=1; i<=n; i++)
		if (s[i]==0)
			dfs(i);
	while (lf)
	{
		printf("%ld ",&(lf->nr));
		lf=lf->ua;
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}