Cod sursa(job #893064)

Utilizator iarbaCrestez Paul iarba Data 26 februarie 2013 12:52:05
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <cstdio>
using namespace std;
int e[50001],v[50001],s[50001][100],i,j,n,m,a,b,t,f[50001];
void rezolva(int ii)
{
	if(e[ii]==0){
			e[ii]=-1;
			v[++t]=ii;
			for(j=1;j<=f[ii];j++){
				e[s[ii][j]]--;
				if(e[s[ii][j]]==0){rezolva(s[ii][j]);}
								 }
			   }
}
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",&a,&b);s[b][++f[b]]=a;e[a]++;}
	for(i=1;i<=n;i++){rezolva(i);}
	for(i=n;i>=1;i--){printf("%ld ",v[i]);}
return 0;
}