Cod sursa(job #2571950)

Utilizator MichaelXcXCiuciulete Mihai MichaelXcX Data 5 martie 2020 10:57:01
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>

#define in  "sortaret.in"
#define out "sortaret.out"

using namespace std;

const int NMAX = 50005;
int N, M, k, sol[NMAX];
bool marked[NMAX];
vector<int> G[NMAX];

void dfs(int nod) {
    marked[nod] = true;

    for(unsigned i = 0; i < G[nod].size(); ++i) {
        int next = G[nod][i];
        if(!marked[next])
            dfs(next);
    }

    sol[++k] = nod;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    freopen(in, "r", stdin);
    freopen(out, "w", stdout);

    cin >> N;
    for(cin >> M; M; M--) {
        int x, y;
        cin >> x >> y;
        G[x].push_back(y);
    }

    for(int i = 1; i <= N; ++i)
        if(!marked[i])
            dfs(i);

    for(int i = k; i > 0; --i)
        cout << sol[i] << ' ';

    return 0;
}