#include <bits/stdc++.h>
using namespace std;
const double pi = 2 * acos(0.0);
const int maxn = 2e5 + 10;
vector<pair<int, int> > G[maxn];
int d[maxn];
void dfs1(int pre, int u) {
  d[u] = 0;
  for (int i = 0; i < G[u].size(); i++) {
    int v = G[u][i].first;
    int w = G[u][i].second;
    if (v == pre) continue;
    dfs1(u, v);
    d[u] += d[v] + w;
  }
}
void dfs2(int pre, int u) {
  for (int i = 0; i < G[u].size(); i++) {
    int v = G[u][i].first;
    int w = G[u][i].second;
    if (v == pre) continue;
    if (w == 0)
      w = 1;
    else if (w == 1)
      w = -1;
    d[v] = d[u] + w;
    dfs2(u, v);
  }
}
int main() {
  int n;
  cin >> n;
  int m = n;
  while (--n) {
    int u, v;
    scanf("%d%d", &u, &v);
    G[u].push_back(make_pair(v, 0));
    G[v].push_back(make_pair(u, 1));
  }
  dfs1(0, 1);
  dfs2(0, 1);
  int Min = 0x3f3f3f3f;
  for (int i = 1; i <= m; i++) {
    Min = min(Min, d[i]);
  }
  printf("%d\n", Min);
  for (int i = 1; i <= m; i++) {
    if (d[i] == Min) {
      printf("%d ", i);
    }
  }
  return 0;
}
