#wLLlydlt60x6A02. 有线电视网络 Cable TV Network

有线电视网络 Cable TV Network

好的,这是整理好的题面,不含解题思路,只包含样例解释。


题目描述

给定一张 nn 个点 mm 条边的无向图,求最少去掉多少个点,可以使图不连通(即变成两个或多个连通块)。

如果不管去掉多少个点,都无法使原图不连通(即原图去掉任意一些点后仍然连通),则直接返回 nn


输入格式

输入包含多组测试数据。
每组数据占一行,首先包含两个整数 nnmm,接下来包含 mm 对形如 (x,y) 的数对,表示点 xx 与点 yy 之间有一条边。

数对 (x,y) 中间不会包含空格,其余地方用一个空格隔开。

输出格式

每组数据输出一个结果,每个结果占一行。

数据范围

0n500 \le n \le 50


输入样例

0 0
1 0
3 3 (0,1) (0,2) (1,2)
2 0
5 7 (0,1) (0,2) (1,3) (1,2) (1,4) (2,3) (3,4)

输出样例

0
1
3
0
2

样例解释

第一组

n=0,m=0n=0, m=0,空图,已经是不连通(没有点),去掉 0 个点即可 → 输出 0

第二组

n=1,m=0n=1, m=0,只有一个点,没有边,已经是不连通(一个点算连通),去掉 0 个点?但题意可能是要变成至少两个连通块,只有一个点时,要去掉多少个点才会不连通?去掉这个点,就没有点了,原图不存在,但是题中说如果不管去掉多少点都无法使原图不连通,则返回 nn
这里:去掉 0 个点,图是连通的(一个点算连通图)。去掉这个点,图消失(没有顶点),也不是“图不连通”,因此唯一方法是去掉 1 个点,图消失,但是按定义,我们只考虑去掉后剩下的图。当去掉所有点后,没有顶点,不算一个图,所以“不连通”意味着剩下至少两个顶点且它们不在一个连通块。
对于 n=1n=1,无法通过去掉点得到两个不连通的顶点(因为总共才一个点),所以返回 n=1n=1
输出 1

第三组

n=3,m=3n=3, m=3,边:(0,1),(0,2),(1,2) 是一个三角形(完全图 K3K_3)。
要去掉多少个点才能不连通?
如果去掉 1 个点,剩下两个点之间有一条边,仍连通。
如果去掉 2 个点,剩下一个点,连通。
因此必须去掉 3 个点才能“不连通”?但去掉 3 个点后没有顶点,不符合要求。实际上对于完全图,去掉任意 n1n-1 个点,剩下一个点,还是连通的,所以必须去掉 nn 个点(全去掉)才能破坏连通性,但去掉所有点后不存在图,所以按题目定义,这种情况属于“不管去掉多少个点都无法使原图不连通”,所以返回 n=3n=3
输出 3

第四组

n=2,m=0n=2, m=0,两个孤立点,已经是不连通(有两个连通块),去掉 0 个点即可。
输出 0

第五组

n=5,m=7n=5, m=7,边: (0,1),(0,2),(1,3),(1,2),(1,4),(2,3),(3,4)

画出来大致是: 0 连接 1,2
1 连接 0,3,2,4
2 连接 0,1,3
3 连接 1,2,4
4 连接 1,3

这是一个比较紧密的图,但不是完全图。寻找最小点割集:
可以尝试去掉点 1 和点 3,剩下 {0,2,4},0 和 2 有边,0 和 4 无边,2 和 4 无边,那么 {0,2} 连通,{4} 孤立,整体不连通。去掉 2 个点即可。
能否只去掉 1 个点使图不连通?比如去掉点 1,剩下 {0,2,3,4},它们之间边:0-2, 2-3, 3-4,仍是连通,所以不行。
所以最小点割集大小 = 2。
输出 2