Cod sursa(job #228054)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 6 decembrie 2008 12:44:11
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<stdio.h>
#include<stdlib.h>
int n,m,i,a,b,h[50500],l[50500],ls,ll,x,c[50500],*ci[50500],j;
int main()
{
 freopen("sortaret.in","r",stdin);
 freopen("sortaret.out","w",stdout);
 scanf("%ld%ld",&m,&n);
 for(i=1;i<=n;++i)
    {scanf("%ld%ld",&a,&b);++h[b];++c[a];ci[a]=(int*)realloc(ci[a],c[a]*sizeof(int)+4);ci[a][c[a]]=b;}
 for(i=1;i<=m;++i)if(h[i]==0)l[++ll]=i;
 for(j=1;j<=m;++j)
 {x=l[j];
  for(i=1;i<=c[x];++i){--h[ci[x][i]];if(h[ci[x][i]]==0)l[++ll]=ci[x][i];}
 }
 for(i=1;i<=ll;++i)printf("%ld ",l[i]);
 printf("\n");
 return 0;
}