Cod sursa(job #617249)

Utilizator idomiralinIdomir Alin idomiralin Data 14 octombrie 2011 13:42:45
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
# include <stdlib.h>
# include <cstdio>

using namespace std;

typedef struct nod
{
        int info;
        nod *urm;
        }*tnod;
        
tnod v[100005];
int viz[100005], a, ct;

void push(tnod &dest, int t)
{
     tnod p;
     p = new nod;
     p -> info = t;
     p -> urm = dest;
     dest = p;
     }

tnod q, prim = NULL;     
void baga(int a)
{
     
     q = new nod;
     q -> info = a;
     q -> urm = prim;
     prim = q;
     }

int dfs(int nod)
{tnod p;

    viz[nod] = 1;
    for (p = v[nod]; p; p = p -> urm)
    if (!viz[p -> info])
    {
               dfs(p -> info);
               
               }
               baga(nod);
    
}
int n, m, i, x, y;
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",&x,&y);
        push(v[x],y);
        }
    
    for (i = 1; i <= n; i++)
    if (!viz[i]) dfs(i);
    
    for (q = prim; q; q = q -> urm)
    printf("%d ", q -> info);
    
return 0;
}