Cod sursa(job #2325914)

Utilizator Alex_BubBuburuzan Alexandru Alex_Bub Data 23 ianuarie 2019 10:35:31
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

const int NMax = 50000;

vector <int> G[NMax + 5], Sol;

int N, M, x, y;

bool Viz[NMax + 5];

void Read()
{
    fin >> N >> M;

    for(int i = 0; i < M; i++) {
        fin >> x >> y;

        G[x].push_back(y);
    }
    fin.close();
}

void DFS(int Nod)
{
    Viz[Nod] = true;

    for(auto Vecin : G[Nod])
        if(!Viz[Vecin]) DFS(Vecin);

    Sol.push_back(Nod);
}

void Solve()
{
    for(int i = 1; i <= N; i++)
        if(!Viz[i]) DFS(i);
}

void Print()
{
    for(int i = Sol.size() - 1; i >= 0; i--)
        fout << Sol[i] << " ";

    fout << '\n'; fout.close();
}

int main()
{
    Read();
    Solve();
    Print();

    return 0;
}