Cod sursa(job #2211853)

Utilizator PetyAlexandru Peticaru Pety Data 12 iunie 2018 10:15:15
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, m, x, y, viz[50002];
vector<int>v[50002];
stack<int>st;

void citire () {
  fin >> n >> m;
  for (int i = 1; i <= m; i++) {
    fin >> x >> y;
    v[x].push_back(y);
  }
}

void dfs (int x) {
  for (int i = 0; i < v[x].size(); i++) {
    if (viz[v[x][i]] == 0) {
      viz[v[x][i]] = 1;
      dfs(v[x][i]);
    }
  }
  st.push(x);
}

void afisare () {
  while (!st.empty()) {
    fout << st.top() << " ";
    st.pop();
  }
}

int main()
{
  citire();
  for (int i = 1; i <= n; i++) {
    if (viz[i] == 0) {
      viz[i] = 1;
      dfs(i);
    }
  }
  afisare();
  return 0;
}