板子题:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int n;
vector<int>E[maxn],ans;
int sz[maxn],minsz=maxn;
void dfs(int x,int fa) {
sz[x]=1;
int maxchild=0;
for(int i=0;i<E[x].size();i++) {
int it=E[x][i];
if(it!=fa) {
dfs(it,x);
sz[x]+=sz[it];
maxchild=max(maxchild,sz[it]);
}
}
int temp=max(maxchild,n-sz[x]);
if(temp<minsz) {
ans.clear();
ans.push_back(x);
minsz=temp;
}
else if(temp==minsz) {
ans.push_back(x);
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<n;i++) {
int x,y;cin>>x>>y;
E[x].push_back(y);
E[y].push_back(x);
}
dfs(1,0);
sort(ans.begin(),ans.end());
cout<<minsz<<" "<<ans.size()<<"\n";
for(int i=0;i<ans.size();i++) cout<<ans[i]<<" ";
return 0;
}