有亿点尴尬
别的OJ:50PTS
洛谷:25PTS
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
#define int long long
using namespace std;
const int N=1e5+5;
vector<int>g[N];
int dp[N];
int dep[N];
int Size[N];
int n;
void dfs(int u, int fa){
Size[u]=1;
dep[u]=dep[fa]+1;
for(int v:g[u]){
if(v==fa)continue;
dfs(v,u);
Size[u]+=Size[v];
}
}
void dfs2(int u, int fa){
for(int v:g[u]){
if(v==fa)continue;
dp[u]=dp[v]-Size[v]+(Size[1]-Size[v]);
dfs2(v,u);
}
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
for(int i=0;i<n-1;i++){
int x,y;
cin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
dfs(1,-1);
for(int i=1;i<=n;i++)dp[1]+=dep[i];
dfs2(1,-1);
int ans=0x3f3f3f3f;
int x;
for(int i=1;i<=n;i++){
if(dp[i]<ans){
ans=dp[i];
x=i;
}
}
cout<<x<<endl;
return 0;
}