#include <bits/stdc++.h>
using namespace std;
const int MX = 2 * 1e5 + 100;
int dp[MX], n, ans;
bool mark[MX];
vector<pair<int, int> > v[MX];
queue<int> q;
void input() {
  cin >> n;
  for (int i = 1; i < n; ++i) {
    int v1, v2;
    cin >> v1 >> v2;
    v[v1].push_back(make_pair(v2, 0));
    v[v2].push_back(make_pair(v1, 1));
  }
}
void dfs(int x) {
  mark[x] = true;
  for (int i = 0; i < v[x].size(); ++i) {
    int cur = v[x][i].first, y = v[x][i].second;
    if (!mark[cur]) {
      ans += y;
      dfs(cur);
    }
  }
}
void bfs(int x) {
  q.push(x);
  while (!q.empty()) {
    x = q.front();
    q.pop();
    for (int i = 0; i < v[x].size(); ++i) {
      int cur = v[x][i].first, y = v[x][i].second;
      if (!mark[cur]) {
        mark[cur] = true;
        q.push(cur);
        if (y)
          dp[cur] = dp[x] - 1;
        else
          dp[cur] = dp[x] + 1;
      }
    }
  }
}
void out() {
  vector<int> out;
  int mn = 1e6;
  for (int i = 1; i <= n; ++i) mn = min(mn, dp[i]);
  for (int i = 1; i <= n; ++i)
    if (mn == dp[i]) out.push_back(i);
  cout << dp[out[0]] << endl;
  for (int i = 0; i < out.size(); ++i) cout << out[i] << " ";
}
int main() {
  ios_base::sync_with_stdio(false);
  input();
  dfs(1);
  memset(mark, 0, sizeof mark);
  dp[1] = ans;
  bfs(1);
  out();
}
