Cod sursa(job #2666448)

Utilizator DariaCretuCretu Daria Stefana DariaCretu Data 1 noiembrie 2020 21:24:55
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream f("sortaret.in");
ofstream g("sortaret.out");

int viz[100001], i, ultim, N, M, x, y, S[100001], copil, j;
vector <int> muchii[100001];

void DFS( int nod )
{

    viz[nod] = 1;


    for ( int j : muchii[nod])
        {

            if(viz[j] == 0)
               {

                   DFS(j);  //fac dfs pentru fiecare dintre nodurile catre care are muchie
               }

        }
    S[++ultim] = nod; //la final il pun in coada

}

void citire()
{
    f >> N >> M;
    for ( i = 1; i <= M; i++ )
        {
            f >> x >> y;           //citesc nodurile x, y si pun in muchii[x] nodurile catre care se duc arce din x
            muchii[x].push_back(y);
        }
}

int main()
{
    citire();

    for ( i = 1; i <= N; i++)
        if ( viz[i] == 0 )
            {
            DFS(i); }

    for ( i = ultim; i >= 1; i-- )
        g << S[i] << " "; //afisez coada de la final pentru ca ele se afla sortate in ordine inversa

    return 0;
}