#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > adj[200001];
int totalIn, totalOut;
int inEdges[200001];
int outEdges[200001];
void dfs(int u, int par, int in, int out) {
  inEdges[u] = in;
  outEdges[u] = out;
  for (pair<int, int> &p : adj[u]) {
    int v = p.first;
    int type = p.second;
    if (v != par) {
      if (type == 1) {
        dfs(v, u, in, out + 1);
        totalOut++;
      } else {
        dfs(v, u, in + 1, out);
        totalIn++;
      }
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  int s, t;
  for (int i = 0; i < n - 1; i++) {
    cin >> s >> t;
    adj[s].push_back({t, 1});
    adj[t].push_back({s, -1});
  }
  dfs(1, -1, 0, 0);
  int in;
  vector<int> cities;
  int minIn = totalIn;
  cities.push_back(1);
  for (int i = 2; i <= n; i++) {
    in = totalIn - inEdges[i] + outEdges[i];
    if (in < minIn) {
      minIn = in;
      cities.clear();
      cities.push_back(i);
    } else if (in == minIn) {
      cities.push_back(i);
    }
  }
  cout << minIn << "\n";
  for (int &i : cities) cout << i << " ";
  cout << "\n";
  return 0;
}
