Pagini recente » Cod sursa (job #2179806) | Cod sursa (job #2113551) | Cod sursa (job #2658698) | Borderou de evaluare (job #1900516) | Cod sursa (job #296625)
Cod sursa(job #296625)
#include <stdio.h>
long n,m,i,j,l,k,x,y,st[50001],a[3][100001],fin[50001],c[50001],deg[50001];
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",&x,&y);deg[y]++;
if(fin[x]==0){st[x]=fin[x]=l+1;l++;a[1][l]=y;}
else{a[2][fin[x]]=l+1;fin[x]=l+1;l++;a[1][l]=y;}
}
l=0;
for(i=1;i<=n;i++)if(deg[i]==0){l++;c[l]=i;}
k=1;
while(k<=l)
{x=st[c[k]];
while(x){deg[a[1][x]]--;if(deg[a[1][x]]==0){l++;c[l]=a[1][x];}x=a[2][x];}
k++;
}
for(i=1;i<=l;i++)printf("%ld ",c[i]);
fclose(stdin);fclose(stdout);
return 0;
}