Cod sursa(job #1954056)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 5 aprilie 2017 10:21:33
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <cstdio>
#include <vector>

using namespace std;
const int MAX_N = 50000;

vector<int> g[5 + MAX_N];
bool viz[5 + MAX_N];
vector<int> sol;

void dfs(int u) {
  viz[u] = true;
  for (auto v : g[u]) {
    if (!viz[v])
      dfs(v);
  }
  sol.push_back(u);
}

int main() {
  freopen("sortaret.in", "r", stdin);
  freopen("sortaret.out", "w", stdout);
  
  int N, M;
  scanf("%d%d", &N, &M);
  for (int i = 1; i <= M; ++i) {
    int u, v;
    scanf("%d%d", &u, &v);
    g[u].push_back(v);
    g[v].push_back(u);
  }
  for (int u = 1; u <= N; ++u) {
    if (!viz[u])
      dfs(u);
  }
  for (int i = (int) sol.size() - 1; i >= 0; --i)
    printf("%d ", sol[i]);
  printf("\n");
  return 0;
}