main
黄海 2 years ago
parent e4ae329783
commit ec12fbb1c4

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

Loading…
Cancel
Save