#include <bits/stdc++.h>
using namespace std;
int const N = 2e5 + 20;
int n, dp[N], x, y, u, mn;
bool vis[N];
vector<int> adj[N], f[N], ans;
void dfs1(int ver = 0) {
  vis[ver] = 1;
  for (int i = 0; i < adj[ver].size(); i++) {
    u = adj[ver][i];
    if (!vis[u]) {
      dp[0] += f[ver][i];
      dfs1(u);
    }
  }
  return;
}
void dfs2(int ver = 0) {
  vis[ver] = 1;
  for (int i = 0; i < adj[ver].size(); i++) {
    u = adj[ver][i];
    if (!vis[u]) {
      dp[u] = dp[ver];
      if (f[ver][i])
        dp[u]--;
      else
        dp[u]++;
      dfs2(u);
    }
  }
  return;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = 0; i < n - 1; i++) {
    cin >> x >> y;
    x--, y--;
    adj[x].push_back(y);
    f[x].push_back(0);
    adj[y].push_back(x);
    f[y].push_back(1);
  }
  dfs1();
  for (int i = 0; i < n; i++) vis[i] = 0;
  dfs2();
  mn = dp[0];
  for (int i = 0; i < n; i++) {
    if (dp[i] < mn) ans.clear(), mn = dp[i];
    if (dp[i] == mn) ans.push_back(i + 1);
  }
  cout << dp[ans[0] - 1] << '\n';
  for (int i = 0; i < ans.size(); i++) cout << ans[i] << ' ';
  return 0;
}
