#include <bits/stdc++.h>
#define fast ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define ll long long
#define ld long double
#define pb push_back
using namespace std;
const int m=2e5+1;
vector<vector<int>>v;
map<int,set<int>>inv;
int vis[m],dp[m];
void dfs(int node)
     {
       vis[node]=1;
       for(auto child:v[node])
       {
           if(!vis[child])
           {
               dfs(child);
                  dp[node]+=dp[child];
               if(inv[node].count(child))
               dp[node]++;
           }
       }
     }
void dfs1(int node)
{
    vis[node]=1;
    int first=-1;
    for(auto child:v[node])
    {
        if(vis[child])
            first=child;
    }
        if(first!=-1)
        {dp[node]=dp[first];
            if(inv[first].count(node))
                dp[node]--;
            else dp[node]++;
        }
    for(auto child:v[node])
    {
        if(!vis[child])
        {
            dfs1(child);
        }
    }
}
int main() {
 fast
int n,x,y;
cin>>n;
v.resize(n+1);
for(int i=0;i<n-1;i++)
{
    cin>>x>>y;
    v[x].pb(y);
    v[y].pb(x);
    inv[y].insert(x);
}
dfs(1);
memset(vis,0,sizeof vis);
dfs1(1);
int mn=n;
for(int i=1;i<=n;i++) mn=min(mn,dp[i]);
vector<int>ans;
for(int i=1;i<=n;i++)
{
    if(dp[i]==mn)
        ans.pb(i);
}
sort(ans.begin(),ans.end());
cout<<mn<<endl;
for(auto i:ans) cout<<i<<" ";
 return 0;
}