#include <bits/stdc++.h>
using namespace std;
struct Muchii {
  int y;
  bool orientare;
};
int nr;
vector<Muchii> g[200005];
int sol[200005];
vector<int> afis;
bool viz[200005];
void dfs(int nod) {
  viz[nod] = 1;
  for (int i = 0; i < g[nod].size(); i++)
    if (viz[g[nod][i].y] == 0) {
      if (g[nod][i].orientare == 0) nr++;
      dfs(g[nod][i].y);
    }
}
void solve(int nod) {
  viz[nod] = 1;
  for (int i = 0; i < g[nod].size(); i++)
    if (viz[g[nod][i].y] == 0) {
      if (g[nod][i].orientare == 1)
        sol[g[nod][i].y] = sol[nod] + 1;
      else
        sol[g[nod][i].y] = sol[nod] - 1;
      solve(g[nod][i].y);
    }
}
int main() {
  int n, i, x, y, minn = 2000000000;
  scanf("%d", &n);
  for (i = 1; i < n; i++) {
    scanf("%d%d", &x, &y);
    g[x].push_back({y, 1});
    g[y].push_back({x, 0});
  }
  dfs(1);
  for (i = 1; i <= n; i++) viz[i] = 0;
  sol[1] = nr;
  solve(1);
  for (i = 1; i <= n; i++)
    if (minn > sol[i]) {
      minn = sol[i];
      afis.clear();
      afis.push_back(i);
    } else if (minn == sol[i])
      afis.push_back(i);
  printf("%d\n", minn);
  for (i = 0; i < afis.size(); i++) printf("%d ", afis[i]);
  return 0;
}
