S41503.15-3 切断命脉

传统题 时间 1000 ms 内存 256 MiB 3 尝试 0 已通过 0

15-3 切断命脉

切断命脉

庆典安排好了,但Zero的命脉还在跳动——需要切断。

"命脉?"CC问。

"对。"你说,"给定一个网络,找最少需要切断多少条边,才能让网络断开。"

"断开?"

"对。"你说,"分成两个不连通的部分。"

"最少?"

"对。"你说,"最小割——让网络断开的代价最小。"

"咋算?"

"Tarjan找桥。"你说,"桥就是割边——删掉它,图就不连通了。"

"桥?"

"对。"你说,"不是真的桥,是一条边——如果它是两个部分的唯一连接,就是桥。"

"第47条边。"你说,"连接47和48——如果这是唯一连接,它就是桥。"

"切了?"

"对。"你说,"切了这条,47和48就断开了。"

"像切脐带?"

"对。"你说,"像切脐带——断开连接,各自独立。"

"独立好?"

"看情况。"你说,"如果想阻止信息流动,切了好;如果想保持联系,不好。"

"我们切?"

"对。"你说,"我们要切断Zero的命脉——阻止它控制更多区域。"

"切几条?"

"找所有桥。"你说,"每条桥都是命脉。"

"如果有很多?"

"全部切。"你说,"切断所有桥,Zero就碎成孤岛。"

"孤岛?"

"对。"你说,"每个孤岛独立,无法互相支援。"

CC看着那个网络——像血管,像河流,像某种流动的东西。

"流动?"她问。

"对。"你说,"信息在流动——从中心到边缘。"

"切断?"

"对。"你说,"切断流动,就切断控制。"

Echo把网络投射出来——桥一条一条变红,像伤口,像裂痕。

"以前我是连着的。"她说,"现在……被切断了。"

"因为我们在战斗。"你说。

"对。"她说,"因为你们在战斗。


题目描述

给定无向图,求所有割边(桥)。

输入格式

第一行n,mn,m。接下来mm行,每行一条边。

输出格式

所有桥的编号或端点。


输入样例

3 2
1 2
2 3

输出样例

4
6
4

提示

  • Tarjan求桥:low[v]>dfn[u]low[v]>dfn[u],则(u,v)(u,v)是桥。
  • 时间复杂度O(n+m)O(n+m)

在线编程 IDE

建议全屏模式获得最佳体验