Cod sursa(job #2424949)

Utilizator CameliaSSamoilescu Camelia CameliaS Data 23 mai 2019 23:52:57
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");

#define NMAX 500005
vector<int> graf[NMAX];
list<int> sortat;
int viz[NMAX], n, m;

void citire(){
    f>>n>>m;
    for(int i = 0; i < m ;i ++)
    {
        int a, b;
        f>>a>>b;
        graf[a].push_back(b);
    }

}
void dfs(int node){
    viz[node] = 1;
    for(int i = 0; i < graf[node].size(); i ++)
    {
        if(!viz[graf[node][i]])
            dfs(graf[node][i]);
    }
    sortat.push_front(node);

}

void SortareTopologica(){
for(int i = 1; i <= n; i ++)
    if(!viz[i])
        dfs(i);

}
void afisare(){

for(int node :sortat)
    g<<node<<" ";
}
int main()
{
    citire();
    SortareTopologica();
    afisare();
    return 0;
}