Skip to content

Latest commit

 

History

History
59 lines (33 loc) · 1.47 KB

C - 最小割点.md

File metadata and controls

59 lines (33 loc) · 1.47 KB

C : 最小割点

Time Limit: 1 Sec, Memory Limit: 128 Mb

Description

学过网络流我们知道,一个网络的最小割等于其最大流。

但这是针对最小割边而言。

我们看这么个问题:

两台电脑通过一系列诸如交换机、路由器等网络设备通信,网络可以有多种链路连通。这两台电脑只要还有网络设备连通它们,就能互相通信。

给定它们的相连关系,至少坏掉几个网络设备,会使这两台电脑无法通信?

Input

每组数据给出 n 和 m,表示 n 个设备,m个相连关系。

设备编号为 1, 2, ..., n。 其中 1、2 号设备为题述的两台电脑。

数据保证最初两台电脑连通。

3 ≤ n ≤ 100,1 ≤ m ≤ 1000。

Output

使两台电脑无法通信的最少坏掉的设备个数。

Sample Input

4 3
1 3
2 4
3 4

Sample Output

1

Hint

最小割点可以拆成最小割边问题处理:

对于本题,两个节点相连,比如 1 与 3 相连,相当于有一个 1 -> 3 的边,和一条 3 -> 1 的边。

拆点,可以给每个点两个编号,一个负责入边,一个负责出边,把1 拆成 1 * 2 = 21 * 2 + 1 = 3,把 3 拆成 3 * 2 = 63 * 2 + 1 = 7

建新图: 2 -> 3, 6 -> 7, 3 -> 6, 7 -> 2

对新图求最小割边,就是原图的最小割点了。

参考代码