Cod sursa(job #893130)

Utilizator iarbaCrestez Paul iarba Data 26 februarie 2013 13:15:37
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <cstdio>
using namespace std;
int e[50001],v[50001],s[50001][70],i,j,n,m,a,b,t,f[50001];
void rezolva(int ii)
{
	int j;
	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;
}