#include <bits/stdc++.h>
using namespace std;
vector<int> w[600000];
vector<int> re[600000];
vector<int> d;
int visit[600000];
int cnt;
int r, result;
void dfs(int n) {
  if (visit[n] == 1) return;
  visit[n] = 1;
  for (int i = 0; i < w[n].size(); i++) {
    if (visit[w[n][i]] == 0) {
      dfs(w[n][i]);
    }
  }
  for (int i = 0; i < re[n].size(); i++) {
    if (visit[re[n][i]] == 0) {
      r++;
      dfs(re[n][i]);
    }
  }
}
void dfs2(int n) {
  if (visit[n] == 1) return;
  if (r < result) {
    result = r;
    d.clear();
    d.push_back(n);
  } else if (r == result) {
    d.push_back(n);
  }
  visit[n] = 1;
  for (int i = 0; i < w[n].size(); i++) {
    if (visit[w[n][i]] == 0) {
      r++;
      dfs2(w[n][i]);
      r--;
    }
  }
  for (int i = 0; i < re[n].size(); i++) {
    if (visit[re[n][i]] == 0) {
      r--;
      dfs2(re[n][i]);
      r++;
    }
  }
}
int main(void) {
  result = 60000000;
  r = 0;
  int a, b;
  cin >> cnt;
  for (int i = 0; i < cnt - 1; i++) {
    cin >> a >> b;
    w[a].push_back(b);
    re[b].push_back(a);
  }
  int n = 1;
  dfs(n);
  memset(visit, 0, sizeof(visit));
  dfs2(n);
  cout << result << endl;
  sort(d.begin(), d.end());
  for (int i = 0; i < d.size(); i++) cout << d[i] << " ";
  cout << endl;
  return 0;
}
