func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<pair<int, int> > grafo[212345];   int marc[212345], dp[212345], ans[212345], ansmin = 1e9;   void dfs(int x) {     marc[x] = 1;     for (int i = 0; i < grafo[x].size(); i++) {       int viz = grafo[x][i].first;       int type = grafo[x][i].second;       if (marc[viz]) continue;       dfs(viz);       dp[x] += dp[viz];       if (type) dp[x]++;     }   }   void dfs2(int x) {     marc[x] = 0;     ans[x] = dp[x];     ansmin = min(ansmin, ans[x]);     for (int i = 0; i < grafo[x].size(); i++) {       int viz = grafo[x][i].first;       int type = grafo[x][i].second;       if (!marc[viz]) continue;       int dpx = dp[x];       int dpv = dp[viz];       dp[x] -= dp[viz];       if (type) dp[x]--;       dp[viz] += dp[x];       if (!type) dp[viz]++;       dfs2(viz);       dp[x] = dpx;       dp[viz] = dpv;     }   }   int n;   int main() {     scanf( %d , &n);     for (int i = 1; i < n; i++) {       int u, v;       scanf( %d %d , &u, &v);       grafo[u].push_back(make_pair(v, 0));       grafo[v].push_back(make_pair(u, 1));     }     dfs(1);     dfs2(1);     printf( %d n , ansmin);     for (int i = 1; i <= n; i++) {       if (ansmin == ans[i]) printf( %d  , i);     }     printf(  n );   }   