#include <bits/stdc++.h>
using namespace std;
int n;
int a[200010];
vector<int> adj[200010];
int red[200010];
int green[200010];
map<int, bool> exist[200010];
int ans[200010];
int red_count = 0;
int green_count = 0;
int counta = INT_MAX;
void read_graph() {
  int x, y;
  cin >> n;
  for (int i = 0; i < int(n); i++) {
    a[i + 1] = 0;
  }
  for (int i = 1; i < n; i++) {
    cin >> x >> y;
    adj[x].push_back(y);
    exist[x][y] = true;
    adj[y].push_back(x);
  }
  red[1] = 0;
  green[1] = 0;
}
void dfs(int v, int p) {
  for (auto u : adj[v]) {
    if (u != p) {
      if (exist[v][u])
        green_count++;
      else {
        red_count++;
      }
      dfs(u, v);
    }
  }
}
void soln(int v, int p) {
  ans[v] = (red_count - red[v]) + green[v];
  for (auto u : adj[v]) {
    if (u != p) {
      if (exist[v][u]) {
        green[u] = green[v] + 1;
        red[u] = red[v];
      } else {
        green[u] = green[v];
        red[u] = red[v] + 1;
      }
      soln(u, v);
    }
  }
}
void solve() {
  read_graph();
  dfs(1, 0);
  soln(1, 0);
  for (int i = 0; i < int(n); i++) {
    if (ans[i + 1] < counta) counta = ans[i + 1];
  }
  cout << counta << endl;
  for (int i = 0; i < int(n); i++) {
    if (counta == ans[i + 1]) cout << i + 1 << " ";
  }
  cout << endl;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int t;
  t = 1;
  while (t--) solve();
  return 0;
}
