Cod sursa(job #2671354)

Utilizator QubeeStefan Ste Qubee Data 11 noiembrie 2020 22:39:44
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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


vector<int> adiacenta[100001];
vector <int> sortare;

bool viz[100001] = {false};
int n,m,x,y;

void citire(){

    f>>n>>m;

    for(int i =1; i <=m ;i++){

        f>>x>>y;
        adiacenta[x].push_back(y);
    }

}

void DFS(int nod){

    viz[nod] = true;

    for(int i=0; i<adiacenta[nod].size(); i++){

        if(!viz[adiacenta[nod][i]])
            DFS(adiacenta[nod][i]);

    }

    sortare.push_back(nod);

}

void afisare(){

    reverse(sortare.begin(), sortare.end());

    for(int i=0; i< sortare.size(); i++)

        g<<sortare[i]<<" ";

    g<<"\n";

}


int main(){

    citire();

    for(int i = 1; i <= n; i++){

        if(!viz[i])
            DFS(i);

    }

    afisare();


    return 0;

}