Cod sursa(job #2484267)

Utilizator OvidRata Ovidiu Ovid Data 30 octombrie 2019 20:49:57
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include<bits/stdc++.h>
using namespace std; 
#define pb push_back
ifstream fin("sortaret.in"); ofstream fout("sortaret.out");

vector<int> l, l0, r, s;
vector<bool> v;
vector<vector<int> > g; int x, y;
int m, n;


void dfs(int s){
v[s]=true;
l0.pb(s);
    for( auto i=g[s].begin(); i!=g[s].end(); i++){
        if(v[*i]!=true){
        dfs(*i);} }

    }





int main(){
fin>>n>>m;
g.resize(n+1);
r.assign(n+1, 0);
for(int i=1; i<=m; i++){
    fin>>x>>y;
    g[x].pb(y);
    r[y]=1;

}
    v.assign(n+1, 0);
 for(int i=1; i<=n; i++){
     if(r[i]==0){s.pb(i);}
 }

 for(int i=0; i<s.size(); i++){
     l0.clear();
     dfs(s[i]);
     l.insert(l.begin(), l0.begin(), l0.begin()+l0.size());
 }
for(int i=0; i<l.size(); i++){
    fout<<l[i]<<' ';
}

    
}