Cod sursa(job #2533484)

Utilizator danbesuDan Besu danbesu Data 29 ianuarie 2020 10:11:10
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include<fstream>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;

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

stack<int>rez;
vector<int>graf[50001];
bool viz[50001];
int n, m;

void afisare_vecini();
void parcurgere(int nod){
    viz[nod] = true;

    for(int i = 0; i< graf[nod].size(); ++i){
        int vecin = graf[nod][i];
        if(!viz[vecin])
            parcurgere(vecin);
    }
    rez.push(nod);

}

int main()
{
    in>>n>>m;
    while(m--){
        int a, b;
        in>>a>>b;
        graf[a].push_back(b);
    }

    //afisare_vecini();
    for(int nod = 1; nod <= n; ++nod){
        if(viz[nod] == false){
            parcurgere(nod);
        }
    }

    while(!rez.empty()){
        out<<rez.top() <<' ';
        rez.pop();
    }

    return 0;
}

/*void afisare_vecini(){
    for(int i = 1; i<=n; ++i){
        out<<i<<"-";
        for(int j = 0; j < graf[i].size(); ++j){
            out<<graf[i][j]<<' ';
        }
        out<<'\n';
    }
    out<<'\n';
}*/