Cod sursa(job #3336435)

Utilizator alexscanteieScanteie Alexandru alexscanteie Data 24 ianuarie 2026 18:37:00
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

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

int n,m,x,y;
vector<vector<int>> adj;
vector<int> visited,ans;

void dfs(int v){
    visited[v]=true;
    for(int u: adj[v]){
        if(!visited[u]){
            dfs(u);
        }
    }
    ans.push_back(v);
}

void toposort(){
    visited.assign(n+1,false);
    ans.clear();
    for(int i=1;i<=n;i++){
        if(!visited[i]){
            dfs(i);
        }
    }
    reverse(ans.begin(), ans.end());
    for(int i=0;i<ans.size();i++){
        fout << ans[i] << " ";
    }
}

int main(){
    fin >> n >> m;
    adj.resize(n+1);
    ans.resize(n+1);
    visited.resize(n+1);
    for (int i=1;i<=m;i++){
        fin >> x>>y;
        adj[x].push_back(y);
    }
    toposort();

    return 0;
}