Cod sursa(job #2501821)

Utilizator AntoniuFicAntoniu Ficard AntoniuFic Data 30 noiembrie 2019 11:34:34
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <stack>

using namespace std;

int n, m;
vector<int> graph[50050];
bool visited[50050];
stack<int> S;

void PushIt(int node){
    for(auto &v : graph[node]){
        if(!visited[v]){
            visited[v] = 1;
            PushIt(v);
        }
    }
    S.push(node);
}

int main() {
    ifstream f("sortaret.in");
    ofstream g("sortaret.out");
    f>>n>>m;
    for (int i = 0; i < m; ++i) {
        int node, distance;
        f>>node>>distance;
        graph[node - 1].push_back(distance - 1);
    }
    for (int i = 0; i < n; ++i) {
        if(!visited[i]){
            visited[i] = 1;
            PushIt(i);
        }
    }
    while(!S.empty()){
        cout<<S.top() + 1<<' ';
        S.pop();
    }
    return 0;
}