Cod sursa(job #2850882)

Utilizator paul911234vaida paul paul911234 Data 17 februarie 2022 17:44:33
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <vector>
#include <map>
#include <queue>
#include <fstream>
#include <utility>
using namespace std;

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

pair<vector<int>, vector<int>> nodes[(int)5e4 + 1];
vector<bool> visited((int)5e4 + 1, false);

void display(int node) {
    visited[node] = true;
    for (int i = 0; i < nodes[node].first.size(); ++i) {
        if (visited[nodes[node].first[i]] == false) {
            display(nodes[node].first[i]);
        }
    }
    fout << node << ' ';
}


int main() {
    int n, m;
    fin >> n >> m;
    for (int i = 1, x, y; i <= m; ++i) {
        fin >> x >> y;// x -> y, x este tatal lui y iar y este fiul lui x
        nodes[y].first.push_back(x); // tatal lui y
        nodes[x].second.push_back(y); //copilul lui x
    }
    for (int i = 1; i <= n; ++i) {
        if (nodes[i].second.size() == 0) {
            display(i);
        }
    }
}