#include <bits/stdc++.h>
using namespace std;
const int maxn = 200005;
int tot, dp[maxn], n;
int nextt[maxn * 2], head[maxn], val[maxn * 2], edge[maxn * 2];
void add(int u, int v, int z) {
  tot++;
  nextt[tot] = head[u];
  head[u] = tot;
  edge[tot] = v;
  val[tot] = z;
}
void dfs1(int now, int fa) {
  for (int i = head[now]; i; i = nextt[i])
    if (edge[i] != fa) {
      dfs1(edge[i], now);
      dp[now] += dp[edge[i]] + val[i];
    }
}
void dfs2(int now, int fa) {
  for (int i = head[now]; i; i = nextt[i])
    if (edge[i] != fa) {
      if (val[i])
        dp[edge[i]] = dp[now] - 1;
      else
        dp[edge[i]] = dp[now] + 1;
      dfs2(edge[i], now);
    }
}
int main() {
  int i, u, v, minn;
  while (~scanf("%d", &n)) {
    tot = 0;
    memset(head, 0, sizeof(head));
    memset(nextt, 0, sizeof(nextt));
    memset(edge, 0, sizeof(edge));
    memset(dp, 0, sizeof(dp));
    memset(val, 0, sizeof(val));
    for (i = 1; i <= n - 1; ++i) {
      scanf("%d%d", &u, &v);
      add(v, u, 1);
      add(u, v, 0);
    }
    dfs1(1, 0);
    dfs2(1, 0);
    minn = 0x7fffffff;
    for (i = 1; i <= n; ++i) minn = min(minn, dp[i]);
    cout << minn << endl;
    for (i = 1; i <= n; ++i)
      if (dp[i] == minn) cout << i << endl;
  }
  return 0;
}
