Cod sursa(job #1882974)

Utilizator AndreiFlorescuAndrei Florescu AndreiFlorescu Data 17 februarie 2017 17:14:18
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

vector<int> graf[50001];
vector<int> rez;
bool viz[50001];

void dfs (int u) {
    viz[u] = 1;
    for (vector<int>::iterator it = graf[u].begin(); it!= graf[u].end(); it++) {
      if (!viz[*it]) {
        dfs (*it);
      }
    }
    rez.push_back(u);
}

int main() {
    ifstream file_in ("sortaret.in");
    ofstream file_out ("sortaret.out");

    int n, m;
    int u, v;
    int i;

    file_in >> n >> m;
    for (i = 0; i < m; i++) {
      file_in >> u >> v;
      graf[u].push_back(v);
    }

    for (i = 1; i <= n; i++) {
      if (!viz[i]) {
        dfs(i);
      }
    }

    for (i = n - 1; i >= 0; i--) {
      file_out << rez[i] << " ";
    }

    return 0;
}