Cod sursa(job #455010)

Utilizator emanuela.hallerHaller Emanuela emanuela.haller Data 12 mai 2010 22:04:31
Problema Sortare topologica Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.95 kb
#include<stdio.h>
typedef struct celula
   {
    int info;
    struct celula *urm;
   } cel,*lista;
lista l,fii[50000];
long viz[50000];

void dfs(long q)
    {
     lista w,p;
     viz[q]=1;
     p=fii[q];
     while (p)
       {
        if (viz[p->info]==0) dfs(p->info);
        p=p->urm;
       }
     w=(lista)calloc(sizeof(cel),1);  
     w->info=q;
     w->urm=l;
     l=w;
    }

int main()
  {
   freopen("sortaret.in","r",stdin);
   freopen("sortaret.out","w",stdout);
   long n,m,x,y,i;
   scanf("%li%li",&n,&m);
   for(i=1;i<=n;i++)
      {
       fii[i]=NULL;
       viz[i]=0;
       }
   for(;m;--m)
     {
      scanf("%i%i",&x,&y);
      l=(lista)calloc(sizeof(cel),1);
      l->info=y;
      l->urm=fii[x];
      fii[x]=l;
     } 
   l=NULL;  
   for(i=1;i<=n;i++)
     {
      if (viz[i]==0) dfs(i);
     }  
   while (l)
     {
      printf("%li ",l->info);
      l=l->urm;
     }  
   return 0;
  }