#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > grafo[212345];
int marc[212345], dp[212345], ans[212345], ansmin = 1e9;
void dfs(int x) {
  marc[x] = 1;
  for (int i = 0; i < grafo[x].size(); i++) {
    int viz = grafo[x][i].first;
    int type = grafo[x][i].second;
    if (marc[viz]) continue;
    dfs(viz);
    dp[x] += dp[viz];
    if (type) dp[x]++;
  }
}
void dfs2(int x) {
  marc[x] = 0;
  ans[x] = dp[x];
  ansmin = min(ansmin, ans[x]);
  for (int i = 0; i < grafo[x].size(); i++) {
    int viz = grafo[x][i].first;
    int type = grafo[x][i].second;
    if (!marc[viz]) continue;
    int dpx = dp[x];
    int dpv = dp[viz];
    dp[x] -= dp[viz];
    if (type) dp[x]--;
    dp[viz] += dp[x];
    if (!type) dp[viz]++;
    dfs2(viz);
    dp[x] = dpx;
    dp[viz] = dpv;
  }
}
int n;
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) {
    int u, v;
    scanf("%d %d", &u, &v);
    grafo[u].push_back(make_pair(v, 0));
    grafo[v].push_back(make_pair(u, 1));
  }
  dfs(1);
  dfs2(1);
  printf("%d\n", ansmin);
  for (int i = 1; i <= n; i++) {
    if (ansmin == ans[i]) printf("%d ", i);
  }
  printf("\n");
}
