rt
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
typedef long long ll;
int n,m;
ll f[N],sz[N];//第i个点是根时的距离和,sz[i]是第i个点的子树节点数量(包括自己)
vector<int>e[N];
void dfs(int x,int p){
sz[x] = 1;
for(auto y : e[x]){
if(y == p){
continue;
}
dfs(y,x);
sz[x] += sz[y];
f[x] += sz[y] + f[y];
}
}
void dfs1(int x,int p){
if(x != 1)
f[x] += f[p] - f[x] - sz[x] + n - sz[x];
for(auto y : e[x]){
if(y == p){
continue;
}
dfs1(y,x);
}
}
void solve(){
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);
dfs1(1,0);
ll ans = 0,sum = 0;
for(int i = 1; i <= n; i++){
if(f[i] > sum){
sum = f[i];
ans = i;
}
}
//cout << f[654] << "\n";
cout << ans << "\n";
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T = 1;
while(T--){
solve();
}
}
虽然和答案一样都输出654,但是我此时的深度之和为11325。题解里的代码的深度之和有10625和11325还有12025的都可以ac @minstdfx @_bzy @realskc