Cod sursa(job #300206)

Utilizator bacerandreiBacer Andrei bacerandrei Data 7 aprilie 2009 12:00:37
Problema Sortare topologica Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.02 kb
#include <stdio.h>   
struct nod   
{   
    long nr;   
    nod *ua;   
} *l[50010],*lf;   
long i,n,m,t,f;   
char s[50010];   
  
void dfs(int nd)   
{   
    nod *p;   
    s[nd]=1;   
    p=l[nd];   
    while (p)   
    {   
        if (s[p->nr]==0)   
            dfs(p->nr);   
        p=p->ua;   
    }   
    p=new nod;   
    p->nr=nd;   
    p->ua=lf;   
    lf=p;   
}   
  
void clad(int t, int f)   
{   
    nod *p;   
    p=new nod;   
    p->nr=f;   
    p->ua=l[t];   
    l[t]=p;   
}   
  
int main()   
{   
    freopen("sortaret.in","r",stdin);   
    freopen("sortaret.out","w",stdout);   
    scanf("%ld %ld",&n,&m);   
    for (i=1; i<=m; i++)   
    {   
        scanf("%ld %ld",&t,&f);   
        clad(t,f);   
    }   
    for (i=1; i<=n; i++)   
        if (s[i]==0)   
            dfs(i);   
    while (lf)   
    {   
        printf("%ld ",lf->nr);   
        lf=lf->ua;   
    }   
    fclose(stdin);   
    fclose(stdout);   
    return 0;   
}