Cod sursa(job #2658742)

Utilizator martinmiere133Cranga Antonio martinmiere133 Data 14 octombrie 2020 21:50:39
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <set>
#include <algorithm>
#include <list>
#include <map>
#include <math.h>
using namespace std;
typedef int var;
 
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
 
vector<int> G[50001];
vector<int> SOL;
bool VIZ[50001];
 
void dfs(int node) {
    VIZ[node] = 1;
    for(vector<int>::iterator it=G[node].begin(); it!=G[node].end(); ++it) {
            if(!VIZ[*it])
                dfs(*it);
    }
    SOL.push_back(node);
}
 
int main() {
    int n, m, a, b;
    fin>>n>>m;
    while(m--) {
        fin>>a>>b;
        G[a].push_back(b);
    }
    for(int i=1; i<=n; i++) {
        if(!VIZ[i])
            dfs(i);
    }
    for(int i=SOL.size() - 1; i>=0; i--)
        fout<<SOL[i]<<" ";
    return 0;
}