#include <bits/stdc++.h>
using namespace std;
const int inf = 2000000000;
const long double eps = 1e-07;
int n;
vector<pair<int, int> > a[300000];
int dp[300000];
int path[300000];
int res = inf;
int depth[300000];
vector<int> b;
void dfs(int v, int p, int temp, int d) {
  int sum = 0;
  path[v] = temp;
  depth[v] = d;
  for (int i = 0; i < a[v].size(); ++i)
    if (a[v][i].first != p) {
      if (a[v][i].first == a[v][i].second)
        dfs(a[v][i].first, v, temp + 1, d + 1);
      else
        dfs(a[v][i].first, v, temp, d + 1), ++sum;
      sum += dp[a[v][i].first];
    }
  dp[v] = sum;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n - 1; ++i) {
    int x, y;
    scanf("%d %d", &x, &y);
    --x;
    --y;
    a[x].push_back(make_pair(y, y));
    a[y].push_back(make_pair(x, y));
  }
  dfs(0, -1, 0, 0);
  for (int i = 0; i < n; ++i) {
    if (res > (dp[0] + path[i] - (depth[i] - path[i]))) {
      b.clear();
      res = (dp[0] + path[i] - (depth[i] - path[i]));
    }
    if (res == (dp[0] + path[i] - (depth[i] - path[i]))) b.push_back(i);
  }
  printf("%d\n", res);
  for (int i = 0; i < b.size(); ++i) printf("%d ", b[i] + 1);
  return 0;
}
