#include #include #include #define WHITE 0 #define GREY 1 #define BLACK 2 #define INF 99999 using namespace std; int checked[999] = {WHITE}; void dfs(const list lista[], int start) { stack stack; int checked[999] = {WHITE}; stack.push(start); checked[start] = GREY; while (!stack.empty()) { int act = stack.top(); stack.pop(); if (checked[act] == GREY) { cout << act << ' '; for (auto it = lista[act].begin(); it != lista[act].end(); ++it) { stack.push(*it); if (checked[*it] != BLACK) checked[*it] = GREY; } checked[act] = BLACK; // nodo controllato } } } int main() { int u, w; int n; cin >> n; list lista[INF]; for (int i = 0; i < n; ++i) { cin >> u >> w; lista[u].push_back(w); } dfs(lista, 0); return 0; }