Cod sursa(job #406992)

Utilizator Bogdan_CCebere Bogdan Bogdan_C Data 1 martie 2010 22:52:33
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<stdio.h>
#include<stdlib.h>
using namespace std;
#define FIN "sortaret.in"
#define FOUT "sortaret.out"
#define NMAX 50004
#define MMAX 100005
struct nod
 {
  int info;
  nod *urm;     
 } *G[NMAX],*rez;
typedef nod* lista;

void add(lista &v,int x)
{
nod *q=new nod;
q->info=x;
q->urm=v;
v=q;
} 
int viz[NMAX],n,m;
void dfs(int x)
{viz[x]=1;
for(nod* i=G[x];i;i=i->urm)
 {if(!viz[i->info])
         dfs(i->info);
         }
 viz[x]=2;
 add(rez,x);          
}


int main()
{freopen(FIN,"r",stdin);
 freopen(FOUT,"w",stdout);
 scanf("%d %d",&n,&m);
 for(;m;m--)
  {int x,y;
   scanf("%d %d",&x,&y);
   add(G[x],y);         
  }   
 for(int i=1;i<=n;i++) if(!viz[i]) dfs(i);
 for(nod* i=rez;i;i=i->urm )
  printf("%d ",i->info); 
}