#include <bits/stdc++.h>
using namespace std;
int II() {
  int q;
  scanf("%d", &q);
  return q;
}
int dx[] = {0, -1, 0, 1};
int dy[] = {-1, 0, 1, 0};
int dxx[] = {0, -1, -1, -1, 0, 1, 1, 1};
int dyy[] = {-1, -1, 0, 1, 1, 1, 0, -1};
int n;
vector<pair<int, int>> v[200005];
map<int, vector<int>> mp;
int cnt[200005][2];
void dfs(int u, int parent) {
  for (int i = 0; i < v[u].size(); i++) {
    int it = v[u][i].first, type = v[u][i].second;
    if (it == parent) continue;
    dfs(it, u);
    if (type == 1) {
      cnt[u][0] += cnt[it][0] + 1;
      cnt[u][1] += cnt[it][1];
    } else if (type == -1) {
      cnt[u][1] += cnt[it][1] + 1;
      cnt[u][0] += cnt[it][0];
    }
  }
}
void dfs1(int u, int parent) {
  for (int i = 0; i < v[u].size(); i++) {
    int it = v[u][i].first, type = v[u][i].second;
    if (it == parent) continue;
    if (type == 1) {
      int x1 = cnt[u][0] - cnt[it][0];
      int x2 = cnt[u][1] - cnt[it][1];
      cnt[it][1]++;
      cnt[it][1] += x2;
      cnt[it][0] += x1 - 1;
    } else if (type == -1) {
      int x1 = cnt[u][0] - cnt[it][0];
      int x2 = cnt[u][1] - cnt[it][1];
      cnt[it][0]++;
      cnt[it][1] += x2 - 1;
      cnt[it][0] += x1;
    }
    mp[cnt[it][1]].push_back(it);
    dfs1(it, u);
  }
}
void solve() {
  cin >> n;
  for (int i = 1; i < n; i++) {
    int u, vv;
    cin >> u >> vv;
    v[u].push_back({vv, 1});
    v[vv].push_back({u, -1});
  }
  dfs(1, -1);
  mp[cnt[1][1]].push_back(1);
  dfs1(1, -1);
  int mi = 1e8;
  for (auto it : mp) {
    mi = min(mi, it.first);
  }
  vector<int> pa;
  for (auto it : mp[mi]) pa.push_back(it);
  sort(pa.begin(), pa.end());
  cout << mi << endl;
  for (auto it : pa) cout << it << " ";
  cout << endl;
}
int main() {
  int tt = 1;
  int cas = 1;
  while (tt--) {
    solve();
  }
}
