本人dfs代码如下:(WA on:#1、#9) 记录详情
#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<int> v[100005];
vector<int> z[100005];
int asb[100005];
int minn=100005,minid;
int sum=0;
int flag=0;
void dfs(int x,int fa){
asb[x]=1;
int maxnn=0;
for(int i=0;i<v[x].size();i++){
int y=v[x][i];
if(y==fa) continue;
dfs(y,x);
asb[x]+=asb[y];
maxnn=max(asb[y],maxnn);
}
maxnn=max(n-asb[x],maxnn);
if(minn>maxnn) minn=maxnn,minid=x;
}
void dfs2(int x,int fa,int pop){
sum+=pop;
for(int i=0;i<v[x].size();i++){
int y=v[x][i];
if(y==fa) continue;
dfs2(y,x,pop+1);
}
}
int main(){
cin>>n;
for(int i=1;i<n;i++){
int x,y,z1;scanf("%d%d",&x,&y);
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1,0);
dfs2(minid,0,0);
cout<<minid<<" "<<sum;
return 0;
}