#include <bits/stdc++.h>
using namespace std;
const double dinf = 1e30;
vector<pair<int, int> > vec[200050];
int n;
int dp[200050], rec[200050];
int dep[200050], res[200050];
void dfs(int u, int fa, int w, int d) {
  rec[u] = rec[fa] + w;
  dep[u] = d;
  dp[u] = 0;
  for (int i = 0; i < vec[u].size(); i++) {
    int v = vec[u][i].first, id = vec[u][i].second;
    if (v == fa) continue;
    dfs(v, u, id, d + 1);
    dp[u] += dp[v] + id;
  }
}
int main() {
  while (cin >> n) {
    for (int i = 1; i <= n; i++) vec[i].clear();
    int a, b;
    for (int i = 1; i < n; i++) {
      cin >> a >> b;
      vec[a].push_back(make_pair(b, 0));
      vec[b].push_back(make_pair(a, 1));
    }
    dfs(1, 0, 0, 0);
    int ans = 1 << 30;
    for (int i = 1; i <= n; i++) {
      res[i] = dp[1] + (dep[i] - rec[i]) - rec[i];
      ans = min(ans, res[i]);
    }
    vector<int> ans_vec;
    for (int i = 1; i <= n; i++) {
      if (res[i] == ans) ans_vec.push_back(i);
    }
    cout << ans << endl;
    for (int i = 0; i < ans_vec.size(); i++)
      if (i == ans_vec.size() - 1)
        cout << ans_vec[i] << endl;
      else
        cout << ans_vec[i] << " ";
  }
  return 0;
}
