Cod sursa(job #1036713)

Utilizator Alexghita96Ghita Alexandru Alexghita96 Data 19 noiembrie 2013 16:07:01
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <vector>

#define Nmax 50001

using namespace std;

int N, M, B[Nmax], Used[Nmax], D[Nmax], nr;
vector <int> A[Nmax];

void Citire()
{
    int a, b;
    scanf("%d %d", &N, &M);
    for (int i = 1; i <= M; ++i)
    {
        scanf("%d %d", &a, &b);
        A[a].push_back(b);
        B[a]++;
    }
}

void DFS(int nod)
{
    Used[nod] = 1;
    for (int i = 0; i < B[nod]; ++i)
    {
        if (!Used[A[nod][i]])
            DFS(A[nod][i]);
    }
    Used[nod] = 2;
    D[++nr] = nod;
}

void Afisare()
{
    for (int i = nr; i >= 1; --i)
        printf("%d ", D[i]);
}

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

    Citire();
    DFS(1);
    Afisare();

    return 0;
}