main
黄海 2 years ago
parent e4ae329783
commit ec12fbb1c4

@ -26,17 +26,15 @@ void dfs1(int u, int fa) {
int v = e[i]; int v = e[i];
if (v == fa) continue; if (v == fa) continue;
dfs1(v, u); dfs1(v, u);
if (sz[v]) { if (sz[v] == 0) continue;
g[u] += g[v] + 2 * w[i]; g[u] += g[v] + 2 * w[i];
int now = mx1[v] + w[i]; int now = mx1[v] + w[i];
if (now >= mx1[u]) { if (now >= mx1[u]) {
mx2[u] = mx1[u]; mx2[u] = mx1[u];
mx1[u] = now; mx1[u] = now;
id[u] = v; id[u] = v;
} else if (now >= mx2[u]) { } else if (now >= mx2[u])
mx2[u] = now; mx2[u] = now;
}
}
sz[u] += sz[v]; sz[u] += sz[v];
} }
} }
@ -53,9 +51,9 @@ void dfs2(int u, int fa) {
up[v] = max(up[u], mx1[u]) + w[i]; up[v] = max(up[u], mx1[u]) + w[i];
} else if (sz[v] && sz[v] != k) { } else if (sz[v] && sz[v] != k) {
ans[v] = ans[u]; ans[v] = ans[u];
if (id[u] == v) { if (id[u] == v)
up[v] = max(mx2[u], up[u]) + w[i]; up[v] = max(mx2[u], up[u]) + w[i];
} else else
up[v] = max(up[u], mx1[u]) + w[i]; up[v] = max(up[u], mx1[u]) + w[i];
} }

Loading…
Cancel
Save