|
|
@ -41,9 +41,9 @@ int g[N]; // 不管以哪点为根出发,记录:从u出发把所有点都送
|
|
|
|
统计信息包括:
|
|
|
|
统计信息包括:
|
|
|
|
① mx1[u]:以u为根的子树中,u可以走的最长距离.每次变更是通过mx1[u]=max(mx1[v]+w[i])更新的
|
|
|
|
① mx1[u]:以u为根的子树中,u可以走的最长距离.每次变更是通过mx1[u]=max(mx1[v]+w[i])更新的
|
|
|
|
② mx2[u]:以u为根的子树中,u可以走的次长距离
|
|
|
|
② mx2[u]:以u为根的子树中,u可以走的次长距离
|
|
|
|
③ id:
|
|
|
|
③ id[u]: 以u为根的子树中,当获取到u可以走的最长距离时,它第一个经过的点记录到id[u]中
|
|
|
|
④ sz:
|
|
|
|
④ sz[u]: 以u为根的子树中,有多少个需要接的人员
|
|
|
|
⑤ f:
|
|
|
|
⑤ f[u]: 以u为根的子树中,从u出发,接完子树中所有人员,并且,返回到u,所需要的时间
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void dfs1(int u, int fa) {
|
|
|
|
void dfs1(int u, int fa) {
|
|
|
|
for (int i = h[u]; ~i; i = ne[i]) {
|
|
|
|
for (int i = h[u]; ~i; i = ne[i]) {
|
|
|
|