C20203030 @ 2020-12-03 08:47:53
第二篇题解,我在写点分树模板的时候发现了这种写法有锅。
比如对于下面的数据(点分树样例):
8 1
1 2 1
1 3 1
2 4 1
2 5 1
3 6 1
3 7 1
3 8 1
1
这样神蛙会把
各位可以自行试一试,眼见为实。
而且我发现了他代码中具体的错误:
void solve(int u){
vis[u]=true;
calc(u);
for(re int i=head[u];i;i=edge[i].nxt){
int v=edge[i].to;
if(vis[v])continue;
root=0;
get_root(v,0,siz[v]);
solve(root);
}
}
因为siz[v]不是真的子树大小,所以锅了
希望能有人看看是不是真的有问题,毕竟神蛙的题解很多人在看,本人是蒟蒻,如果我错了轻喷
by 星空舞涵 @ 2020-12-03 08:52:06
可以问问神蛙
by watermonster @ 2020-12-03 08:54:24
@C20203030 有证明,不过我看不太懂
by C20203030 @ 2020-12-03 08:56:17
我觉得还是换一种写法比较合适吧,搞一个函数去统计子树大小来替换上面的
by watermonster @ 2020-12-03 08:58:22
@C20203030 应该对得到的重心重新跑一次get_root就行了吧?
by C20203030 @ 2020-12-03 09:01:34
@watermonster 可能是的
by gxy001 @ 2020-12-03 09:01:58
早就有人发现了,复杂度是对的
by C20203030 @ 2020-12-03 09:02:58
@gxy001 maybe
by Froggy @ 2020-12-25 07:22:38
确实有锅,但复杂度是对的。
还有我是菜鸡不是神蛙。