#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; }