#include <bits/stdc++.h>
const double EPS = 1e-9;
const int MOD = 1000000007;
const int INF = 2000 * 1000 * 1000;
const int MAX = 4000000;
using namespace std;
int popcount(int n) {
  bitset<32> b(n);
  return b.count();
}
template <typename T>
T gcd(T a, T b) {
  return b == 0 ? a : gcd(b, a % b);
}
template <typename T>
T lcm(T a, T b) {
  T temp = gcd(a, b);
  return temp ? (a / temp * b) : 0;
}
template <typename T>
T modpow(T base, T exp, T modulus) {
  base %= modulus;
  T result = 1;
  while (exp > 0) {
    if (exp & 1) result = (result * base) % modulus;
    base = (base * base) % modulus;
    exp >>= 1;
  }
  return result;
}
inline bool isInteger(const std::string& s) {
  if (s.empty() || ((!isdigit(s[0])) && (s[0] != '-') && (s[0] != '+')))
    return false;
  char* p;
  strtol(s.c_str(), &p, 10);
  return (*p == 0);
}
vector<pair<int, int>> adj[200005];
int flip[200005], ok[200005], tot_flip = 0;
bool vis[200005];
void dfs(int node, int cnt, int curflip) {
  vis[node] = 1;
  flip[node] = curflip;
  ok[node] = cnt - curflip;
  for (auto child : adj[node]) {
    if (!vis[child.first] && !child.second)
      tot_flip++, dfs(child.first, cnt + 1, curflip + 1);
    else if (!vis[child.first])
      dfs(child.first, cnt + 1, curflip);
  }
}
int main() {
  int n, a, b, mn = INF, cnt_min = 0;
  cin >> n;
  for (int i = 0; i < n - 1; i++) {
    scanf("%d %d", &a, &b);
    adj[a].push_back(make_pair(b, 1));
    adj[b].push_back(make_pair(a, 0));
  }
  dfs(1, 0, 0);
  for (int i = 1; i <= n; i++) {
    if (tot_flip - flip[i] + ok[i] < mn)
      mn = tot_flip - flip[i] + ok[i], cnt_min = 1;
    else if (tot_flip - flip[i] + ok[i] == mn)
      cnt_min++;
  }
  cout << mn << endl;
  for (int i = 1; i <= n; i++)
    if (mn == tot_flip - flip[i] + ok[i]) printf("%d ", i);
  return 0;
}
