Cod sursa(job #282365)

Utilizator ConsstantinTabacu Raul Consstantin Data 17 martie 2009 16:16:45
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<stdio.h>

typedef struct nod{int val;
                nod* urm;} *lista,NOD;

lista v[50002];
lista sol;

int i,j,k,l,m,n,p,ok[50002];
void add(int x,int val){
lista p=new NOD;
p->val=val;
p->urm=v[x];
v[x]=p;
}

void push(int x){
lista p=new NOD;
p->val=x;
p->urm=sol;
sol=p;
}
void df(int x){
ok[x]=1;
for(lista p=v[x];p;p=p->urm)
        if(ok[p->val]==0)
                df(p->val);
ok[x]=3;
push(x);
}

int main(){

freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);

scanf("%d %d",&n,&m);
for(i=1;i<=m;i++)
        {scanf("%d %d",&k,&l);
        add(k,l);
        }
for(i=1;i<=n;i++)
        {if(ok[i]==0)
                df(i);
        }

for(lista p=sol;p;p=p->urm)
        printf("%d ",p->val);
return 0;}