Cod sursa(job #1181589)

Utilizator andreiagAndrei Galusca andreiag Data 3 mai 2014 11:05:44
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
#include <vector>

using namespace std;
const int Nmax = 50444;

vector<int> G[Nmax];
char viz[Nmax];
int Ord[Nmax];

void dfs(int a)
{
    viz[a] = 1;
    for (auto x: G[a])
        if (!viz[x])
            dfs(x);
    Ord[++Ord[0]] = a;
    return;
}

int main()
{
    ifstream f ("sortaret.in");
    ofstream g ("sortaret.out");
    int N, M, a, b;
    f >> N >> M;
    while (M--)
    {
        f >> a >> b;
        G[b-1].push_back(a-1);
    }
    for (int a = 0; a < N; a++)
        if (!viz[a])
            dfs(a);

    for(int i = 1; i <= N; i++)
        g << Ord[i]+1 << ' ';
    g << '\n';

    return 0;
}