#include <bits/stdc++.h>
using namespace std;
template <typename T1, typename T2, typename T3>
class triple {
 public:
  T1 first;
  T2 second;
  T3 third;
  triple() {
    first = 0;
    second = 0;
    third = 0;
  }
};
const int maxn = 2e5 + 10;
const int INF = 1e9;
int n, cost;
int up[maxn], down[maxn];
bool visited[maxn];
vector<int>(g)[(maxn)];
vector<int>(gm)[(maxn)];
vector<int> ans;
void dfs(int v) {
  visited[v] = true;
  for (int u : gm[v])
    if (!visited[u]) {
      down[u] = down[v] + 1;
      up[u] = up[v];
      dfs(u);
    }
  for (int u : g[v])
    if (!visited[u]) {
      cost++;
      up[u] = up[v] + 1;
      down[u] = down[v];
      dfs(u);
    }
  return;
}
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n;
  for (int((i)) = (0); ((i)) < ((n - 1)); ((i))++) {
    int u, v;
    cin >> u >> v;
    u--, v--;
    g[u].push_back(v);
    g[v].push_back(u);
    gm[u].push_back(v);
  }
  dfs(0);
  int best = INF;
  for (int((i)) = (0); ((i)) < ((n)); ((i))++) {
    int tmp = cost + down[i] - up[i];
    if (tmp < best) {
      best = tmp;
      ans.clear();
      ans.push_back(i + 1);
    } else if (tmp == best)
      ans.push_back(i + 1);
  }
  cout << best << '\n';
  for (int a : ans) cout << a << ' ';
  cout << "\n";
  return 0;
}
