#include <bits/stdc++.h>
using namespace std;
const int MAXN = 400005;
int n;
struct Edge {
  int next, to, w;
} e[MAXN];
int ecnt, head[MAXN];
inline void add(int x, int y, int w) {
  e[++ecnt].next = head[x];
  e[ecnt].to = y;
  e[ecnt].w = w;
  head[x] = ecnt;
}
int dis[MAXN];
int mn = 1 << 30;
int dfs(int now, int pre) {
  int ret = 0;
  for (int i = head[now]; i; i = e[i].next) {
    int v = e[i].to;
    if (pre == v) continue;
    ret += dfs(v, now) + e[i].w;
  }
  return dis[now] = ret;
}
void dfs2(int now, int pre) {
  for (int i = head[now]; i; i = e[i].next) {
    int v = e[i].to;
    if (v == pre) continue;
    dis[v] = dis[now] + (e[i].w ? -1 : 1);
    dfs2(v, now);
  }
}
int main() {
  cin.sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = 1; i <= n - 1; i++) {
    int x, y;
    cin >> x >> y;
    add(x, y, 0);
    add(y, x, 1);
  }
  dfs(1, -1);
  dfs2(1, -1);
  for (int i = 1; i <= n; i++) mn = min(mn, dis[i]);
  cout << mn << endl;
  for (int i = 1; i <= n; i++)
    if (dis[i] == mn) cout << i << " ";
  return 0;
}
