Cod sursa(job #1929130)

Utilizator LazarAndreiLazar Andrei Teodor LazarAndrei Data 17 martie 2017 09:47:13
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>
using namespace std;

const int  NMAX = 50005;

int nodes, edges;
bool visited[100005];
vector <int> G[NMAX];
stack <int> S;

void Visit (int node) {
    visited[node] = true;

    for (auto &it: G[node]) {
        if (!visited[it]) {
            Visit (it);
        }
    }
    S.push(node);
}

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

    scanf ("%d%d", &nodes, &edges);
    for (int i = 1; i <= edges; ++ i) {
        int node1, node2;
        scanf ("%d%d", &node1, &node2);
        G[node1].push_back (node2);

    }

    for (int i = 1; i <= nodes; ++ i) {
        if (!visited[i]) {
            Visit (i);
        }
    }

    while (!S.empty ()) {
        printf("%d ", S.top());
        S.pop ();
    }

    return 0;
}