Cod sursa(job #2565338)

Utilizator richardionelRichard Ionel richardionel Data 2 martie 2020 13:43:21
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

const int Nlim = 50001;
const int Mlim = 100001;
int N,M,k;
vector <int> muchii[Mlim];
int vizitat[Nlim] ,sol[Nlim];

void dfs (int nod)
{
   vizitat[nod] = 1;
   sol[++k] = nod;
   for (unsigned int i = 0 ;i < muchii[nod].size() ;i++)
   {
       int vecin = muchii[nod][i];
       if (!vizitat[vecin])
        dfs(vecin);
   }


}

void read()
{
    cin >> N >> M;
    for (int i = 1 ;i <= M ;i++)
    {
        int x ,y;
        cin >> x >> y;
        muchii[x].push_back(y);
    }
}
void rezolvare ()
{
    for (unsigned int i = 1; i <= N ;i++)
    {
        if (vizitat[i] == 0)
        {
            dfs(i);
        }
    }
    for (int i = 1 ;i <= k ;i++)
        cout << sol[i] << " ";

}

int main()
{
    read();
    rezolvare();
}