#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2 * 1e5;
const int AFUERA = 0;
const int ADENTRO = 1;
vector<int> rel[MAXN + 2];
vector<int> direccion[MAXN + 2];
int opuestas[MAXN + 2];
void dfs(int nodo, int padre) {
  int tam = rel[nodo].size(), sig;
  for (int i = 0; i < tam; ++i) {
    sig = rel[nodo][i];
    if (sig == padre) continue;
    dfs(sig, nodo);
    opuestas[nodo] += opuestas[sig];
    opuestas[nodo] += (direccion[nodo][i] == ADENTRO);
  }
}
int respuesta;
vector<int> quienes;
void resuelve(int nodo, int padre, int acc) {
  if (acc < respuesta) {
    respuesta = acc;
    quienes = vector<int>(1, nodo);
  } else if (acc == respuesta)
    quienes.push_back(nodo);
  int tam = rel[nodo].size(), sig;
  for (int i = 0; i < tam; ++i) {
    sig = rel[nodo][i];
    if (sig == padre) continue;
    int aux = (direccion[nodo][i] == ADENTRO) ? -1 : 1;
    resuelve(sig, nodo, acc + aux);
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 0; i < n - 1; ++i) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    rel[a].push_back(b);
    rel[b].push_back(a);
    direccion[a].push_back(AFUERA);
    direccion[b].push_back(ADENTRO);
  }
  dfs(0, 0);
  respuesta = n;
  quienes = vector<int>(1, 0);
  resuelve(0, 0, opuestas[0]);
  cout << respuesta << '\n';
  sort(quienes.begin(), quienes.end());
  for (auto const &act : quienes) {
    cout << act + 1 << " ";
  }
  cout << '\n';
  return 0;
}
