Cod sursa(job #312451)

Utilizator Andrei_ScorpioAndreiana Andrei Daniel Andrei_Scorpio Data 6 mai 2009 08:53:09
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<stdio.h>
#define Nmax 50010
struct elem
{int inf;
elem *urm;
}*a[Nmax];
int n,m,viz[Nmax],st[Nmax],vf;
void citire()
{
	int x,y;
	elem *p;
	freopen("sortaret.in","r",stdin);
	scanf("%d%d",&n,&m);
	for(int i=0;i<m;i++)
	{	scanf("%d%d",&x,&y);
		p=new elem;
		p->inf=y;
		p->urm=a[x];
		a[x]=p;
	}
	fclose(stdin);
}


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

void afisare()
{
	freopen("sortaret.out","w",stdout);
	for(vf=vf-1;vf>=0;vf--)
		printf("%d ",st[vf]);
	printf("\n");
	fclose(stdout);
}
int main()
{
	citire();
	for(int i=1;i<=n;i++)
		if(viz[i]==0)
			parcurg(i);
	afisare();
	return 0;
	
}