MCPcopy Create free account
hub / github.com/algorithmzuo/algorithm-journey / dp1

Method dp1

src/class180/Code02_BigProject1.java:229–252  ·  view source on GitHub ↗
(int u)

Source from the content-addressed store, hash-verified

227
228 // dp递归版,java会爆栈,C++可以通过
229 public static void dp1(int u) {
230 siz[u] = isKey[u] ? 1 : 0;
231 sum[u] = 0;
232 if (isKey[u]) {
233 far[u] = near[u] = 0;
234 } else {
235 near[u] = INF;
236 far[u] = -INF;
237 }
238 for (int e = headv[u]; e > 0; e = nextv[e]) {
239 dp1(tov[e]);
240 }
241 for (int e = headv[u]; e > 0; e = nextv[e]) {
242 int v = tov[e];
243 long len = dep[v] - dep[u];
244 costSum += (sum[u] + 1L * siz[u] * len) * siz[v] + sum[v] * siz[u];
245 siz[u] += siz[v];
246 sum[u] += sum[v] + len * siz[v];
247 costMin = Math.min(costMin, near[u] + near[v] + len);
248 costMax = Math.max(costMax, far[u] + far[v] + len);
249 near[u] = Math.min(near[u], near[v] + len);
250 far[u] = Math.max(far[u], far[v] + len);
251 }
252 }
253
254 // dp1的迭代版
255 public static void dp2(int tree) {

Callers

nothing calls this directly

Calls 1

maxMethod · 0.45

Tested by

no test coverage detected