#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int n, m, p;
vector<pair<int, int> > G[N];
int up[N], f[N];
void dfs(int u, int par) {
  for (auto v : G[u]) {
    if (v.first == par) continue;
    dfs(v.first, u);
    up[u] += up[v.first] + (v.second == 0);
  }
}
void dfs(int u, int par, int cur) {
  f[u] = cur + up[u];
  for (auto v : G[u]) {
    if (v.first == par) continue;
    dfs(v.first, u,
        cur + up[u] - up[v.first] - (v.second == 0) + (v.second == 1));
  }
}
int main() {
  cin >> n;
  for (int i = 0; i < n - 1; i++) {
    int u, v;
    scanf("%d %d", &u, &v);
    G[u].push_back(make_pair(v, 1));
    G[v].push_back(make_pair(u, 0));
  }
  dfs(1, -1);
  dfs(1, -1, 0);
  int best = *min_element(f + 1, f + n + 1);
  cout << best << '\n';
  for (int i = 1; i <= n; i++)
    if (f[i] == best) printf("%d ", i);
  return 0;
}
