社区讨论
最小生成树、倍增16分可能得错误
P2245星际导航参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mewlmh0e
- 此快照首次捕获于
- 2025/08/29 16:56 6 个月前
- 此快照最后确认于
- 2025/11/03 23:43 4 个月前
lca中:
CPPint lca(int u,int v)
{
int ans = 0;
if(dep[u] > dep[v]) swap(u,v);//dep[u] < dep[v],u更靠近根节点
while(dep[u] != dep[v])
{
ans = max(ans,mx[v][lg2[dep[v] - dep[u]]]);
v = fa[v][lg2[dep[v] - dep[u]]];
}
if(u == v) return ans;
for(int i = lg2[dep[u]];i >= 0;i--)
{
if(fa[u][i] != fa[v][i])
{
ans = max(ans,mx[u][i]);
ans = max(ans,mx[v][i]);
u = fa[u][i],v = fa[v][i];
}
}
ans = max(ans,mx[u][0]);
return max(ans, mx[v][0]);
}
在最后一步跳到父节点时可能只考虑了
ans = max(ans,mx[u][0]); 而没有考虑另一点跳的边权。回复
共 0 条回复,欢迎继续交流。
正在加载回复...