Cod sursa(job #2670946)

Utilizator Snake2003lalallalal Snake2003 Data 10 noiembrie 2020 23:18:55
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>

#define Nmax 50005

using namespace std;

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

vector < int > Numbers[Nmax];
vector < int > Numbers_Transpus[Nmax];

stack < int > Stiva;

int Visited[Nmax];

int vf, muchii;

inline void DFS( int Nod )
{
    int Vecin;

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

int main()
{
    fin >> vf >> muchii;
    for( int i = 1; i <= muchii; ++ i )
    {
        int x, y;
        fin >> x >> y;
        Numbers[x].push_back(y);
        //Numbers_Transpus[y].push_back(x);
    }

    for( int i = vf; i >= 1; -- i )
        if( !Visited[i] )
            DFS(i);

    while( !Stiva.empty() )
    {
        fout << Stiva.top() << " ";
        Stiva.pop();
    }
    return 0;
}