Cod sursa(job #2466802)

Utilizator educationalLets Go educational Data 2 octombrie 2019 22:55:54
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>
#define MaxN 50000
using namespace std;

vector<int> L[MaxN + 1];
int sortop[MaxN + 1];
int viz[MaxN + 1];
int N, M, K;

void DFS(int node)
{
    viz[node] = 1;
    for(auto neighbour : L[node])
        if(!viz[neighbour]) DFS(neighbour);

    sortop[++K] = node;
}

int main(){

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

    int i, x, y;

    cin >> N >> M;
    for(i = 1; i <= M; i++)
    {
        cin >> x >> y;
        L[x].push_back(y);
    }

    for(i = 1; i <= N; i++)
    if(!viz[i]) DFS(i);

    for(i = N; i >= 1; i--) cout << sortop[i] << ' ';


return 0;
}