Cod sursa(job #2567902)

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

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

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

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

}

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

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