Solution 十分简单的换根dp。 首先随便选择一个点作为根,计算出它的结果; 考虑它的一个相邻结点作为根时的结果与之间的关系:当根从转移到时,子树内的点到根的距离减少、子树外的点到根的距离增加,如果设为以为根时的子树大小,那么。 按照式子暴力dfs转移即可,复杂度。 Code #include <bits/stdc++.h> using namespace std; using ll = long long; struct edge { int v, nxt; }; vector<edge> G; int n, size[1000002], h[1000...