Cod sursa(job #3316306)

Utilizator DavidFFarcas David DavidF Data 18 octombrie 2025 11:30:17
Problema Sortare topologica Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <iostream>
#include <set>
#include <stack>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
int v,m;
vector<set<int>>g;
vector<bool>vizitat;
stack<int>s;
void dfs(int nodstart){
    vizitat[nodstart]=true;
    for(const int& vecin:g[nodstart]){
        if(vizitat[vecin]==0){
            dfs(vecin);
        }
    }
    s.push(nodstart);
}
int main()
{
    int a,b,mini;
    in>>v>>m;
    g=vector<set<int>>(v+1);
    vizitat=vector<bool>(v+1,0);
    for(int i=0;i<m;i++){
        in>>a>>b;
        g[a].insert(b);
    }
    for(int i=1;i<v;i++){
        if(vizitat[i]==0){
            dfs(i);
        }
    }
    while(!s.empty()){
        out<<s.top()<<" ";
        s.pop();
    }
    return 0;
}