From ec12fbb1c47869b594fc752cab30bb977c2852f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Wed, 17 Jan 2024 08:20:16 +0800 Subject: [PATCH] 'commit' --- TangDou/Topic/HuanGenDp/P6419.cpp | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/TangDou/Topic/HuanGenDp/P6419.cpp b/TangDou/Topic/HuanGenDp/P6419.cpp index 0f1a1d2..f358e85 100644 --- a/TangDou/Topic/HuanGenDp/P6419.cpp +++ b/TangDou/Topic/HuanGenDp/P6419.cpp @@ -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]; }