#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200007;
vector<int> g[MAXN], gr[MAXN];
int cnt[MAXN], ans;
vector<int> res;
void dfs1(int v, int p = -1) {
  int i, to;
  cnt[v] = 0;
  for (i = 0; i < g[v].size(); i++) {
    to = g[v][i];
    if (to == p) continue;
    dfs1(to, v);
    cnt[v] += (cnt[to] + 1);
  }
  for (i = 0; i < gr[v].size(); i++) {
    to = gr[v][i];
    if (to == p) continue;
    dfs1(to, v);
    cnt[v] += cnt[to];
  }
}
void dfs2(int v, int p = -1, int now = 0) {
  int i, to;
  if ((now + cnt[v]) == ans) res.push_back(v);
  if ((now + cnt[v]) > ans) {
    res.clear();
    res.push_back(v);
    ans = now + cnt[v];
  }
  for (i = 0; i < g[v].size(); i++) {
    to = g[v][i];
    if (to == p) continue;
    dfs2(to, v, now + cnt[v] - cnt[to] - 1);
  }
  for (i = 0; i < gr[v].size(); i++) {
    to = gr[v][i];
    if (to == p) continue;
    dfs2(to, v, now + cnt[v] - cnt[to] + 1);
  }
}
int main() {
  int n, i, s, t;
  cin >> n;
  for (i = 0; i < n - 1; i++) {
    cin >> s >> t;
    g[s].push_back(t);
    gr[t].push_back(s);
  }
  dfs1(1);
  ans = 0;
  dfs2(1);
  cout << n - 1 - ans << endl;
  sort(res.begin(), res.end());
  for (i = 0; i < res.size(); i++) cout << res[i] << " ";
  cout << endl;
  return 0;
}
