Cod sursa(job #617239)

Utilizator idomiralinIdomir Alin idomiralin Data 14 octombrie 2011 13:00:16
Problema Sortare topologica Scor 0
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[10000];
int viz[10000], a, ct;

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

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