#include <bits/stdc++.h>
using namespace std;
const int MAX = 2 * 1e5 + 5;
const unsigned long long INF = 1e9 + 9;
const unsigned long long MOD = 1000000007;
vector<int> graph[MAX], rev[MAX];
bool S[MAX];
int red[MAX], level[MAX];
int R;
void solve(int u) {
  S[u] = true;
  for (int i = 0; i < graph[u].size(); i++) {
    if (!S[graph[u][i]]) {
      red[graph[u][i]] = red[u];
      level[graph[u][i]] = level[u] + 1;
      solve(graph[u][i]);
    }
  }
  for (int i = 0; i < rev[u].size(); i++) {
    if (!S[rev[u][i]]) {
      R++;
      red[rev[u][i]] = red[u] + 1;
      level[rev[u][i]] = level[u] + 1;
      solve(rev[u][i]);
    }
  }
}
int main() {
  int n;
  cin >> n;
  int a, b;
  for (int i = 0; i < n - 1; i++) {
    cin >> a >> b;
    graph[a].push_back(b);
    rev[b].push_back(a);
  }
  vector<int> ans;
  int val = INF, tmp;
  solve(1);
  for (int i = 1; i <= n; i++) {
    tmp = R - 2 * red[i] + level[i];
    if (tmp == val) ans.push_back(i);
    if (tmp < val) {
      ans.clear();
      ans.push_back(i);
      val = tmp;
    }
  }
  cout << val << endl;
  for (int i = 0; i < ans.size(); i++) cout << ans[i] << " ";
  return 0;
}
