P1656 炸铁路
P1656 炸铁路
问题
P1656 炸铁路
B 国的城市由双向铁路连接,并且原本任意两座城市之间都可以互相到达。现在只能炸毁一条铁路,需要找出所有会使交通网失去连通性的铁路,并按端点编号顺序输出。
数据规模:,。
当然本题由于数据规模小,朴素的做法可以直接暴力枚举每一条边。
不过本题还可以采用更通用的 Tarjan 求割边(桥)算法。
对于 DFS 树边 , 表示 的子树不经过父边能够到达的最早时间戳。若满足 ,说明这棵子树无法通过任何返祖边回到 或更高祖先,因此父边 是桥。
这里必须使用严格大于,因为 的子树只要还能绕回 本身,父边就存在替代路径。割点常见的条件是 ,不过它判断的是删除父节点后的连通性,DFS 根还要结合儿子数量单独处理,不能只把符号替换后机械套用。
Tarjan 的时间复杂度为 ,最后排序桥的复杂度为 ,其中 是桥的数量。空间复杂度为 。
▶
P1656 炸铁路
1 | |
记录
- 归属:桥、边双连通分量;
- 新增:桥使用严格条件
low[v] > dfn[u],并且输出前要把无向边端点规范化后再排序。 - 分类:待定
P1656 炸铁路
http://miqiu.space/posts/p1656001/