Cod sursa(job #2663502)

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

using namespace std;

vector<int> adiacenta[50001];
int culoare[50001];
int ordine[50001], crt = 0;

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

    culoare[nod] = 2;
    ordine[crt] = nod;
    crt++;
}

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);
    }
    
    for (auto i = crt-1; i >= 0; i--) {
        cout << ordine[i] << " ";
    }
    return 0;
}