Cod sursa(job #2549876)

Utilizator rusu.ralucaRusu Raluca rusu.raluca Data 18 februarie 2020 08:47:02
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream> 
#include <fstream>
#include <vector>

using namespace std; 
 
#define N 50005
#define M 100005  
 
ifstream in("sortaret.in");
ofstream out("sortaret.out");
/*O sortare topologica a varfurilor unui graf orientat aciclic este o 
operatie de ordonare liniara a varfurilor, astfel incat, daca exista 
un arc (i, j), atunci i apare inaintea lui j in aceasta ordonare.
*/
int n, m, x, y;
vector <int> v[N];
int visited[N];
 
int dfs(int nod){
    visited[nod] = 1;
    for(int i=1; i<v[nod].size(); i++){
        if(visited[v[nod][i]] == 0){
            dfs(v[nod][i]);
        }
    }
    return nod;
}
 
int main(){
    in >> n >> m;
    for(int i = 1; i <= m; i++){
        in >> x >> y;
        v[y].push_back(x);
    }
    for(int i = 1; i <= n; i++){
        if(visited[i]==0){
            out << dfs(i) << " ";
        }
    }         
}