Cod sursa(job #1452357)

Utilizator AlexNiuclaeNiculae Alexandru Vlad AlexNiuclae Data 20 iunie 2015 16:57:02
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>
#include <vector>

using namespace std;

const int Nmax = 50010;

int n , m , x , y;

bool marked[Nmax];

vector < int > ans , g[Nmax];

void dfs(int node)
{
    marked[node] = true;
    for (int i = 0; i < g[node].size(); ++i)
        if (!marked[g[node][i]])
            dfs(g[node][i]);
    ans.push_back(node);
}

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

    for (scanf("%d %d", &n, &m); m ; --m)
    {
        scanf("%d %d", &x, &y);
        g[x].push_back(y);
    }

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

    for ( ; ans.size(); ans.pop_back())
        printf("%d ", ans.back());

    return 0;
}