把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

题解 P5234 [JSOI2012] 越狱老虎桥

洛谷

题意

有一个 n 个节点,m 条边的图,还有一条不确定的边,问最劣情况下的桥的权值最小值(极其省流版)。若这个图强联通则输出 1

分析

其实这个省流版题意就带了一定的分析了,要使有一个电网没有通电,那么必然需要使其变成两个联通块,那么我们删除的这条边也就一定是一条桥了。

首先要做的就是缩点,在处理这一类的题目时,先思考缩点后的树的情况可以节省很多没有必要的思考,可以给我们提供整个方向。

接下来我们就要思考我们这条不确定的边的影响,因为我们的答案是最劣情况下的桥的权值最小值,因此,我们从最小的边开始,假如这条边不能被这一条边保护,那这条边就是答案。

我们分析这一条边能保护的对象,他与原来的那棵树连成了一个环,这一条环上的我们都能保护。(令这一条边两端为 UV)。

也就是说,我们枚举的这一条边的两边 uvuv 的父亲),UV 中必然有一个节点是 v 子树下的,而另一个,必然不可以是。考虑在 dfn 序上,就可以使 U,与 V 约束在一个范围内,最后就可以解决了。

sort(edge+1,edge+cnt+1);
for(int i=1; i<=cnt; ++i) {
int u=edge[i].u,v=edge[i].v,w=edge[i].w;
if(fa[v][0]!=u) swap(u,v);
if(dfn[v]<=L1&&R1<=R[v]&&dfn[v]<=L2&&R2<=R[v]) print(w);
if(dfn[v]<=L1&&R1<=R[v]) continue;
if(dfn[v]<=L2&&R2<=R[v]) continue;
if(L1<=dfn[v]&&R[v]<=R1) {
L1=dfn[v],R1=R[v];
continue;
} else if(L2<=dfn[v]&&R[v]<=R2) {
L2=dfn[v],R2=R[v];
continue;
} else print(w);
}
print(-1);

时间复杂度:O(mlogm),瓶颈为排序,排序优化后可至 O(m)

posted @   djh0314  阅读(17)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示