Cod sursa(job #1492076)

Utilizator ELHoriaHoria Cretescu ELHoria Data 27 septembrie 2015 02:04:11
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>
#include <vector>
#include <algorithm>


using namespace std;

void dfs(int v, vector< vector<int> >& graph, vector<int>& ret) {
  for (auto& w : graph[v]) {
    dfs(w, graph, ret);
  }
  ret.push_back(v);
}

int main() {
  ifstream cin("sotaret.in");
  ofstream cout("sotaret.out");
  int n, m, x, y;
  cin >> n >> m;
  vector< vector<int> > graph(n);
  vector<int> ret, in(n);
  while (m--) {
    cin >> x >> y;
    graph[x].push_back(y);
    in[y]++;
  }
  for (int i = 0; i < n; i++) {
    if (!in[i]) {
      dfs(i, graph, ret);
    }
  }
  reverse(begin(ret), end(ret));
  for (auto& x : ret) {
    cout << x << " ";
  }
}