Luogu P2860 [USACO06JAN] Redundant Paths G 题解 Tarjan 无向图缩点 边双连通

题目链接:Luogu P2860 [USACO06JAN] Redundant Paths G
题目描述:

给定一张连通的无向图,问最少添加多少条无向边,使得任意两个点之间存在至少两条路径。

题解:

首先我们考虑一个没有环且连通的无向图,这个时候这个无向图也就变成了一棵树。对于这样一棵树,我们不难发现每次选择两个叶子结点进行相连是最优的。此时答案也就是 ⌈ l e a f N o d e C n t 2 ⌉ \lceil \frac {leafNodeCnt} 2\rceil 2leafNodeCnt(若叶子结点个数为单数,需要将最后一个叶子结点与任意一个叶子结点相连接,如果只有一个叶子结点,那么将其与根节点相连即可)。
而对于环上的任意两个点,他们之间一定存在至少两条路径(顺时针与逆时针沿着环走)。因此我们不需要考虑环内部的结点。所以我们可以对无向图进行缩点(即将环上的点缩成一个点),在Tarjan的过程中我们走过一条边就要将其与反向边打上标记,不走反向边,其余的过程与有向图缩点一致。
综上,首先将所有的环缩成一个点,然后对新图中出度为1的结点(也就是叶子结点)之间连接边。如果记录出度为1的结点个数为cnt,那么最终的答案即为 ⌈ c n t 2 ⌉ \lceil \frac {cnt} 2\rceil 2cnt
上面的过程也就是求边双联通分量。

代码:LuoguP2860

  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值