#include <bits/stdc++.h>
using namespace std;
std::vector<pair<int, int> > adjList[200010];
pair<int, int> parent[200010];
pair<int, int> subt[200010];
int first, B, fans;
std::vector<int> ans;
void dfs(int curr_node, int par) {
  std::vector<pair<int, int> >::iterator it = adjList[curr_node].begin();
  pair<int, int> temp;
  while (it != adjList[curr_node].end()) {
    temp = (*it);
    if (temp.first != par) {
      dfs(temp.first, curr_node);
      parent[temp.first] = make_pair(curr_node, temp.second);
      if (temp.second == 1)
        subt[curr_node].first++;
      else
        subt[curr_node].second++;
      subt[curr_node].first += subt[(temp.first)].first;
      subt[curr_node].second += subt[(temp.first)].second;
    }
    it++;
  }
}
void dfs2(int curr_node, int par, int val) {
  if (val < fans) {
    fans = val;
    ans.clear();
    ans.push_back(curr_node);
  } else if (val == fans) {
    ans.push_back(curr_node);
  }
  std::vector<pair<int, int> >::iterator it = adjList[curr_node].begin();
  pair<int, int> temp;
  while (it != adjList[curr_node].end()) {
    temp = (*it);
    if (temp.first != par) dfs2(temp.first, curr_node, val + temp.second);
    it++;
  }
}
int main() {
  int N, u, v;
  scanf("%d", &N);
  for (int i = 1; i <= N - 1; i++) {
    scanf("%d", &u);
    scanf("%d", &v);
    adjList[u].push_back(make_pair(v, 1));
    adjList[v].push_back(make_pair(u, -1));
  }
  parent[1] = make_pair(-1, 0);
  dfs(1, -1);
  int Fd, Bd, Fu, Bu;
  fans = 1000000;
  dfs2(1, -1, subt[1].second);
  cout << fans << endl;
  sort(ans.begin(), ans.end());
  for (int i = 0; i < ans.size(); i++) cout << ans[i] << " ";
  cout << endl;
  return 0;
}
