#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 7;
const int INF = 1e9 + 7;
struct {
  int to, next, w;
} e[maxn << 1];
int head[maxn], cnt = 1;
int n;
bool direct[maxn << 1];
int dp[maxn];
int mmin = INF;
void init() {
  mmin = INF;
  memset(head, 0, sizeof(head));
  cnt = 1;
  memset(direct, 0, sizeof(direct));
  memset(dp, 0, sizeof(dp));
}
void add(int v, int u) {
  e[cnt].to = u;
  e[cnt].next = head[v];
  head[v] = cnt++;
}
void dfs1(int rt, int par) {
  for (int i = head[rt]; i; i = e[i].next) {
    int to = e[i].to;
    if (to == par) continue;
    dfs1(to, rt);
    dp[rt] += dp[to];
    if (!direct[i]) dp[rt]++;
  }
}
void dfs2(int rt, int par) {
  mmin = min(mmin, dp[rt]);
  for (int i = head[rt]; i; i = e[i].next) {
    int to = e[i].to;
    if (to == par) continue;
    if (direct[i])
      dp[to] = dp[rt] + 1;
    else
      dp[to] = dp[rt] - 1;
    dfs2(to, rt);
  }
}
int main() {
  while (~scanf("%d", &n)) {
    init();
    for (int i = 1; i < n; i++) {
      int v, u;
      scanf("%d %d", &v, &u);
      direct[cnt] = 1;
      add(v, u);
      add(u, v);
    }
    dfs1(1, -1);
    dfs2(1, -1);
    printf("%d\n", mmin);
    for (int i = 1; i <= n; i++) {
      if (dp[i] == mmin) printf("%d ", i);
    }
    cout << '\n';
  }
  return 0;
}
