@[Fее_cle6418](/user/390770) 我确实统计了啊,您仔细看一下我代码,Max 与 Semax 即是
by 一只书虫仔 @ 2021-09-03 21:59:23
@[Fее_cle6418](/user/390770) 没看懂,想请教一下,为什么要在最后更新 $f_i$,为什么不能按照我的做法在最开始循环找儿子的时候就统计呢?
by 一只书虫仔 @ 2021-09-03 22:06:11
@[一只书虫仔](/user/114914)
不知道为什么,把您的代码统计的几个if换成以下就过了:
```cpp
dp[cur] += max(cnt, 1);
pnt = max(pnt, Max + Semax + max(cnt - (fa==-1), 1));
```
by S0CRiA @ 2021-09-03 22:17:22
@[Fее_cle6418](/user/390770) 哦我知道了,要统计父亲
by 一只书虫仔 @ 2021-09-04 08:47:28
@[Fее_cle6418](/user/390770) 现在 WA 了 Sub2 的第二个点,感觉跟您写的几乎没有区别啊
```cpp
void dfs (int cur, int fa) {
bool isleaf = true;
int cnt = 0;
int Max = 0, Semax = 0;
for (int p = head[cur]; p; p = e[p].v) {
if (e[p].u == fa) continue;
dfs(e[p].u, cur);
isleaf = false;
dp[cur] = max(dp[cur], dp[e[p].u]);
cnt++;
if (dp[e[p].u] > Max) {
Semax = Max;
Max = dp[e[p].u];
} else if (dp[e[p].u] > Semax) Semax = dp[e[p].u];
}
if (isleaf)
dp[cur] = 1;
else
dp[cur] += cnt;
if (isleaf)
pnt = max(pnt, 1);
else if (fa == -1)
pnt = max(pnt, Max + Semax + cnt - 1);
else
pnt = max(pnt, Max + Semax + cnt);
}
```
by 一只书虫仔 @ 2021-09-04 08:50:30
@[一只书虫仔](/user/114914) sub2第二个点貌似长这样:
```
2 1
1 2
```
具体原因我看看 qwq
by y_kx_b @ 2022-11-10 23:22:24
@[一只书虫仔](/user/114914) 错因:
```
if (fa == -1)
pnt = max(pnt, Max + Semax + cnt - 1);
```
如果这个点的 `cnt` 为 $1$,那么相当于 Semax没统计后面多减了个1。貌似链的数据都会挂掉,但具体原因我也不知道,我这题也没搞透 qwq
by y_kx_b @ 2022-11-10 23:30:49
草忽然发现帖子是14个月之前的(
~~烤谷~~
by y_kx_b @ 2022-11-10 23:31:29