Cod sursa(job #2704281)

Utilizator Snake2003lalallalal Snake2003 Data 10 februarie 2021 10:10:40
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>

#define Nmax 50005

using namespace std;

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

int vf, muchii, a, b;

vector < int > Numbers[Nmax];

stack < int > Stiva;

int Visited[Nmax];

inline void DFS(int Nod)
{
    int Vecin;

    Visited[Nod] = 1;
    for(unsigned int i = 0; i < Numbers[Nod].size(); ++ i)
    {
        Vecin = Numbers[Nod][i];
        if(Visited[Vecin] == 0)
            DFS(Vecin);
    }
    Stiva.push(Nod);

}

int main()
{
    fin >> vf >> muchii;
    for(int i = 1; i <= muchii; ++ i)
        {
            fin >> a >> b;
            Numbers[a].push_back(b);
        }
    for(int i = 1; i <= vf; ++ i)
    {
        if(Visited[i] == 0)
            DFS(i);
    }
    while(!Stiva.empty())
    {
        int top = Stiva.top();
        Stiva.pop();
        fout << top << " ";
    }
    return 0;
}