#include <bits/stdc++.h>
using namespace std;
int hd[555555], nt[555555], to[555555], en, n;
void init() {
  memset(hd, -1, sizeof(hd));
  memset(nt, -1, sizeof(nt));
  en = 0;
}
void add(int a, int b) {
  to[en] = b;
  nt[en] = hd[a];
  hd[a] = en++;
  to[en] = a;
  nt[en] = hd[b];
  hd[b] = en++;
}
int vis1[555555];
int dfs1(int x) {
  int ans = 0;
  vis1[x] = 1;
  for (int e = hd[x]; e != -1; e = nt[e]) {
    int y = to[e];
    if (!vis1[y]) {
      ans += dfs1(y);
      ans += e & 1;
    }
  }
  return ans;
}
int vis2[555555], mi[555555];
void dfs2(int x, int cur) {
  mi[x] = cur;
  vis2[x] = 1;
  for (int e = hd[x]; e != -1; e = nt[e]) {
    int y = to[e];
    if (!vis2[y]) {
      dfs2(y, cur + (e & 1 ? -1 : 1));
    }
  }
}
int main() {
  cin >> n;
  init();
  for (int i = (0); i < (n - 1); i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    a--;
    b--;
    add(a, b);
  }
  memset(vis1, 0, sizeof(vis1));
  memset(vis2, 0, sizeof(vis2));
  int cur = dfs1(0);
  dfs2(0, cur);
  int ans = 1 << 29, cnt = 0;
  for (int i = (0); i < (n); i++) ans = min(ans, mi[i]);
  for (int i = (0); i < (n); i++)
    if (ans == mi[i]) cnt++;
  printf("%d\n", ans);
  for (int i = (0); i < (n); i++)
    if (ans == mi[i]) printf("%d%s", i + 1, --cnt ? " " : "\n");
  return 0;
}
