#include <bits/stdc++.h>
using namespace std;
constexpr int MAXN = 2e5 + 10;
constexpr long long MOD = 998244353;
constexpr long long INF = 4e4;
constexpr int LOG = 31;
int n, vis1[MAXN], vis2[MAXN], u, v, num[MAXN];
vector<pair<int, int>> G[MAXN];
vector<int> ans;
void dfs1(int u) {
  vis1[u] = 1;
  for (auto v : G[u]) {
    if (!vis1[v.first]) {
      if (v.second == v.first) {
        num[1]++;
      }
      dfs1(v.first);
    }
  }
}
void dfs2(int u) {
  vis2[u] = 1;
  for (auto v : G[u]) {
    if (!vis2[v.first]) {
      num[v.first] = num[u] + (v.second == u) - (v.first == v.second);
      dfs2(v.first);
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 0; i < n - 1; i++) {
    int u, v;
    cin >> u >> v;
    G[u].push_back(make_pair(v, u));
    G[v].push_back(make_pair(u, u));
  }
  dfs1(1);
  dfs2(1);
  int mn = *min_element(num + 1, num + n + 1);
  for (int i = 1; i <= n; i++) {
    if (num[i] == mn) {
      ans.push_back(i);
    }
  }
  cout << mn << "\n";
  sort(ans.begin(), ans.end());
  for (auto i : ans) {
    cout << i << " ";
  }
  return 0;
}
