#wLLlydlt60x6A02. 有线电视网络 Cable TV Network
有线电视网络 Cable TV Network
好的,这是整理好的题面,不含解题思路,只包含样例解释。
题目描述
给定一张 个点 条边的无向图,求最少去掉多少个点,可以使图不连通(即变成两个或多个连通块)。
如果不管去掉多少个点,都无法使原图不连通(即原图去掉任意一些点后仍然连通),则直接返回 。
输入格式
输入包含多组测试数据。
每组数据占一行,首先包含两个整数 和 ,接下来包含 对形如 (x,y) 的数对,表示点 与点 之间有一条边。
数对 (x,y) 中间不会包含空格,其余地方用一个空格隔开。
输出格式
每组数据输出一个结果,每个结果占一行。
数据范围
输入样例
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
样例解释
第一组
,空图,已经是不连通(没有点),去掉 0 个点即可 → 输出 0。
第二组
,只有一个点,没有边,已经是不连通(一个点算连通),去掉 0 个点?但题意可能是要变成至少两个连通块,只有一个点时,要去掉多少个点才会不连通?去掉这个点,就没有点了,原图不存在,但是题中说如果不管去掉多少点都无法使原图不连通,则返回 。
这里:去掉 0 个点,图是连通的(一个点算连通图)。去掉这个点,图消失(没有顶点),也不是“图不连通”,因此唯一方法是去掉 1 个点,图消失,但是按定义,我们只考虑去掉后剩下的图。当去掉所有点后,没有顶点,不算一个图,所以“不连通”意味着剩下至少两个顶点且它们不在一个连通块。
对于 ,无法通过去掉点得到两个不连通的顶点(因为总共才一个点),所以返回 。
输出 1。
第三组
,边:(0,1),(0,2),(1,2) 是一个三角形(完全图 )。
要去掉多少个点才能不连通?
如果去掉 1 个点,剩下两个点之间有一条边,仍连通。
如果去掉 2 个点,剩下一个点,连通。
因此必须去掉 3 个点才能“不连通”?但去掉 3 个点后没有顶点,不符合要求。实际上对于完全图,去掉任意 个点,剩下一个点,还是连通的,所以必须去掉 个点(全去掉)才能破坏连通性,但去掉所有点后不存在图,所以按题目定义,这种情况属于“不管去掉多少个点都无法使原图不连通”,所以返回 。
输出 3。
第四组
,两个孤立点,已经是不连通(有两个连通块),去掉 0 个点即可。
输出 0。
第五组
,边: (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。