kdzhr

1022. Генеалогическое дерево.

Apr 22nd, 2020
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 KB | None | 0 0
  1. // AC 1022 https://acm.timus.ru/problem.aspx?space=1&num=1022
  2.  
  3. #include <queue>
  4. #include <vector>
  5. #include <iostream>
  6. void dfs(std::vector<std::vector<size_t>> &graph, std::vector<bool> &visited, std::vector<size_t> &res, size_t u) {
  7.     visited[u] = true;
  8.     for (auto v : graph[u]) {
  9.         if (!visited[v]) {
  10.             dfs(graph, visited, res, v);
  11.         }
  12.     }
  13.     res.push_back(u);
  14. }
  15.  
  16. int main() {
  17.     size_t n;
  18.     std::cin >> n;
  19.     std::vector<std::vector<size_t>> graph(n + 1);
  20.     std::vector<bool> visited(n + 1, false);
  21.     std::vector<size_t> res;
  22.     for (size_t i = 1; i <= n; i++) {
  23.         size_t a;
  24.         std::cin >> a;
  25.         while (a != 0) {
  26.             graph[i].push_back(a);
  27.             std::cin >> a;
  28.         }
  29.     }
  30.     for (size_t i = 1; i <= n; i++) {
  31.         if (!visited[i]) {
  32.             dfs(graph, visited, res, i);
  33.         }
  34.     }
  35.     for (int32_t i = res.size() - 1; i >= 0; i--) {
  36.         std::cout << res[i] << ' ';
  37.     }
  38.     return 0;
  39. }
Add Comment
Please, Sign In to add comment