Cod sursa(job #278642)

Utilizator alexandru92alexandru alexandru92 Data 12 martie 2009 13:55:30
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<stdio.h>
#define Nmax 50010
int n,uz[Nmax],v[Nmax],vf;
struct nod
     {
      int info;
      nod *urm;
     };
typedef nod *Lista;
Lista L[Nmax];
inline void Insert(int x,int y)
     {
      Lista q=new nod;
      q->info=y;
      q->urm=L[x];
      L[x]=q;
     }
inline void add(int x)
    {
     Lista q=new nod;
     q->info=x;
     q->urm=L[n+1];
     L[n+1]=q;
    }
void DFS(int x)
   {
    uz[x]=1;
    for(Lista p=L[x];p;p=p->urm)
       if(!uz[p->info]) DFS(p->info);
    add(x);
   }
int main()
  {int m,x,y,i;
   freopen("sortaret.in","rt",stdin);
   freopen("sortaret.out","wt",stdout);
   scanf("%d %d",&n,&m);
   for(i=1;i<=m;++i) scanf("%d %d",&x,&y),Insert(x,y);
   for(i=1;i<=n;++i)
     if(!uz[i]) DFS(i);
   for(Lista p=L[n+1];p;p=p->urm) printf("%d ",p->info);
   return 0;
  }