Cod sursa(job #3269300)

Utilizator RosheRadutu Robert Roshe Data 18 ianuarie 2025 16:49:44
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
#include <iostream>
#include <queue>
#include <vector>
#include <list>

std::ifstream in("sortaret.in");
std::ofstream out("sortaret.out");

std::vector<std::vector<int>> w(50000);
std::list<int> result;
int ft[50001];
int visited[50001];
int t = 1;

void DFS(int x){
  for(int i = 0; i<w[x].size(); i++){
    if(visited[w[x][i]] == 0) DFS(w[x][i]);    
  }
  visited[x] = 1;
  ft[x] = t++;
  result.push_front(x);
}

int main(){
  int n, m;
  in >> n >> m;
  for(int i = 0; i<m ;i++){
    int x, y;
    in >> x >> y;
    w[x].push_back(y);
  }
  for(int i = 1; i<=n; i++)
    if(visited[i] == 0)
      DFS(i);
  for(auto it : result)
    out << it << " ";
}