Cod sursa(job #2663498)

Utilizator roxana1708Roxana Gherghina roxana1708 Data 26 octombrie 2020 16:22:53
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> adiacenta[50001];
int culoare[50001];
vector<int> ordine;

void dfs(int nod) {
    culoare[nod] = 1;
    for(auto vecin : adiacenta[nod]) {
        if (culoare[vecin] == 0)
            dfs(vecin);
    }

    culoare[nod] = 2;
    ordine.insert(ordine.begin(), nod);
}

int main() {

    int n, m, x, y;
    cin >> n >> m;

    for(int i = 0; i < m; i++) {
        cin >> x >> y;
        adiacenta[x].push_back(y);
    }

    for(int i = 1; i <= n; i++) {
        if (culoare[i] == 0)
            dfs(i);
    }

    //reverse(ordine.begin(), ordine.end());
    for (auto nod : ordine) {
        cout << nod << " ";
    }
    return 0;
}