#include <bits/stdc++.h>
using namespace std;
long long int mod = 1e9 + 7;
long long int inf = 1e9 + 7;
long long int n;
long long int mn = inf;
vector<pair<long long int, long long int> > st(1000000);
map<pair<long long int, long long int>, long long int> m;
vector<long long int> ans(1000000, 0);
vector<long long int> par(1000000, -1);
pair<long long int, long long int> dfs(long long int p,
                                       vector<vector<long long int> > &v,
                                       vector<long long int> &vis) {
  if (vis[p] == 0) {
    vis[p] = 1;
    long long int ans = 0;
    long long int i;
    pair<long long int, long long int> tt = {(long long int)0,
                                             (long long int)0};
    for (i = 0; i < v[p].size(); i++) {
      if (vis[v[p][i]] == 0) {
        par[v[p][i]] = p;
        pair<long long int, long long int> tmp = dfs(v[p][i], v, vis);
        if (m[{p, v[p][i]}]) {
          tmp.first += 1;
        } else {
          tmp.second += 1;
        }
        tt.first += tmp.first;
        tt.second += tmp.second;
      }
    }
    st[p] = tt;
    return (tt);
  } else {
    return {(long long int)0, (long long int)0};
  }
}
void dfs1(long long int p, vector<vector<long long int> > &v,
          vector<long long int> &vis) {
  if (vis[p] == 0) {
    vis[p] = 1;
    long long int i;
    if (par[p] != -1) {
      ans[p] = st[p].second + ans[par[p]] - st[p].second;
      if (m[{par[p], p}] == 0) {
        ans[p]--;
      } else {
        ans[p]++;
      }
    } else {
      ans[p] = st[p].second;
    }
    for (i = 0; i < v[p].size(); i++) {
      if (vis[v[p][i]] == 0) {
        dfs1(v[p][i], v, vis);
      }
    }
  }
}
void solve() {
  cin >> n;
  vector<vector<long long int> > v(n);
  long long int i, j;
  for (i = 0; i < n - 1; i++) {
    long long int x, y;
    cin >> x >> y;
    x--;
    y--;
    m[{x, y}] = 1;
    v[x].push_back(y);
    v[y].push_back(x);
  }
  vector<long long int> vis(n, 0);
  pair<long long int, long long int> tmp = dfs(0, v, vis);
  fill(vis.begin(), vis.end(), 0);
  dfs1(0, v, vis);
  ans[0] = tmp.second;
  for (i = 0; i < n; i++) {
    mn = min(mn, ans[i]);
  }
  cout << mn << '\n';
  for (i = 0; i < n; i++) {
    if (ans[i] == mn) {
      cout << i + 1 << " ";
    }
  }
  cout << '\n';
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int t = 1;
  while (t--) {
    solve();
  }
}
