#include <bits/stdc++.h>
using namespace std;
void dfs1(int i, vector<int> &dp, vector<vector<pair<int, int>>> &graph,
          int parent) {
  int ans = 0;
  for (auto el : graph[i])
    if (el.first != parent) {
      dfs1(el.first, dp, graph, i);
      ans += dp[el.first];
      if (!el.second) ans++;
    }
  dp[i] = ans;
}
void dfs2(int i, vector<int> &dp, vector<vector<pair<int, int>>> &graph,
          int parent, int add) {
  dp[i] = dp[parent] + add;
  for (auto el : graph[i])
    if (el.first != parent) dfs2(el.first, dp, graph, i, (el.second ? 1 : -1));
}
int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(false);
  int n;
  cin >> n;
  vector<vector<pair<int, int>>> graph(n);
  int a, b;
  for (int i = 0; i < n - 1; i++) {
    cin >> a >> b;
    a--;
    b--;
    graph[a].emplace_back(b, 1);
    graph[b].emplace_back(a, 0);
  }
  vector<int> dp(n + 1);
  dfs1(0, dp, graph, n);
  dp[n] = dp[0];
  dfs2(0, dp, graph, n, 0);
  int mn = *min_element(dp.begin(), dp.end() - 1);
  cout << mn << "\n";
  for (int i = 0; i < n; i++)
    if (dp[i] == mn) cout << i + 1 << " ";
  return 0;
}
