Cod sursa(job #2983166)

Utilizator CalinHanguCalinHangu CalinHangu Data 21 februarie 2023 19:00:12
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <queue>
#include <cstring>

#define ll long long
#define pii pair<int, int>
#define pb push_back
#define x first
#define y second

using namespace std;

ifstream cin("sortaret.in");
ofstream cout("sortaret.out");

const int NMAX = 1e5;
const int MOD = 1e9 + 5;
const char nl = '\n';

int n, m, f[NMAX], ind[NMAX];

vector<int> v[NMAX], toposort;

void dfs(int node){
    f[node] = 1;
    for(auto i: v[node]){
        if(!f[i])
            dfs(i);
    }
    toposort.pb(node);
}

void solve(){
    for(int i = 1; i <= n; ++i){
        if(!f[i])
            dfs(i);
    }
    reverse(toposort.begin(), toposort.end());
    for(auto i: toposort)
        cout << i << ' ';
    cout << nl;
}

int main()
{
    cin >> n >> m;
    for(int i = 1; i <= m; ++i){
        int a, b;
        cin >> a >> b;
        v[a].pb(b);
    }
    solve();
    return 0;
}