Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // AC 1022 https://acm.timus.ru/problem.aspx?space=1&num=1022
- #include <queue>
- #include <vector>
- #include <iostream>
- void dfs(std::vector<std::vector<size_t>> &graph, std::vector<bool> &visited, std::vector<size_t> &res, size_t u) {
- visited[u] = true;
- for (auto v : graph[u]) {
- if (!visited[v]) {
- dfs(graph, visited, res, v);
- }
- }
- res.push_back(u);
- }
- int main() {
- size_t n;
- std::cin >> n;
- std::vector<std::vector<size_t>> graph(n + 1);
- std::vector<bool> visited(n + 1, false);
- std::vector<size_t> res;
- for (size_t i = 1; i <= n; i++) {
- size_t a;
- std::cin >> a;
- while (a != 0) {
- graph[i].push_back(a);
- std::cin >> a;
- }
- }
- for (size_t i = 1; i <= n; i++) {
- if (!visited[i]) {
- dfs(graph, visited, res, i);
- }
- }
- for (int32_t i = res.size() - 1; i >= 0; i--) {
- std::cout << res[i] << ' ';
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment