#include <bits/stdc++.h>
long long MOD = 1000000007;
long long inf = 1e18;
using namespace std;
vector<pair<int, int> > Children[200001];
int Cost[200001];
bool Taken[200001];
int Ans[200001];
int Layer[200001];
int DFS(int node, int cost, int layer) {
  int ans = 0;
  int i;
  Taken[node] = true;
  Cost[node] = cost;
  Layer[node] = layer;
  for (i = 0; i < Children[node].size(); i++) {
    if (Taken[Children[node][i].first]) {
      continue;
    }
    if (Children[node][i].second == 0) {
      ans += DFS(Children[node][i].first, cost, layer + 1) + 1;
    } else {
      ans += DFS(Children[node][i].first, cost + 1, layer + 1);
    }
  }
  return ans;
}
int main() {
  ios::sync_with_stdio(0);
  int n, i, x, y;
  cin >> n;
  for (i = 0; i < n - 1; i++) {
    cin >> x >> y;
    x--;
    y--;
    Children[x].push_back(make_pair(y, 1));
    Children[y].push_back(make_pair(x, 0));
  }
  int d = DFS(0, 0, 0);
  int best = d;
  Ans[0] = 1;
  int factor = 2;
  int cost;
  for (i = 1; i < n; i++) {
    cost = d - (Layer[i] - Cost[i]) + Cost[i];
    if (best > cost) {
      best = cost;
      Ans[i] = factor;
      factor++;
    } else if (best == cost) {
      Ans[i] = factor - 1;
    }
  }
  factor--;
  cout << best << '\n';
  for (i = 0; i < n; i++) {
    if (Ans[i] == factor) {
      cout << i + 1 << " ";
    }
  }
  return 0;
}
