Cod sursa(job #2863601)

Utilizator pandurelPanduru Andrei pandurel Data 6 martie 2022 23:26:36
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>

#define NMax 50005

using namespace std;

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

int N, tata[NMax];
vector <int> desc[NMax];


void dfs(int nodStart)
{
    stack <int> Stiva;
    Stiva.push(nodStart);

    while( !Stiva.empty() )
    {
        int nodCurent = Stiva.top();
        Stiva.pop();

        fout << nodCurent << ' ';

        for(unsigned int i = 0; i < desc[nodCurent].size(); ++ i)
            Stiva.push(desc[nodCurent][i]);
    }
}

int main()
{
    int M, x, y;

    fin >> N >> M;

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

        desc[x].push_back(y);
        tata[y] = x;
    }

    for(int i = 1; i <= N; ++ i)
        if(tata[i] == 0)
        {
            dfs(i);
            break;
        }

    return 0;
}