#wXTTJlydlt60x6602. 网络 Network
网络 Network
好的,这是整理好的题面,不含解题思路,只包含样例解释。
题目描述
给定一张 个点 条边的无向连通图,然后执行 次操作,每次向图中添加一条边,并且询问当前无向图中**“桥”**的数量(桥:一条边被删除后,图变得不连通)。
输入格式
输入包含多组测试数据。
每组数据格式:
第一行两个整数 和 。
接下来 行,每行两个整数 ,表示点 和点 之间有一条边。
接下来一行一个整数 。
再接下来 行,每行两个整数 ,表示在 和 之间加一条边(永久加入,后续查询基于加入后的图)。
当输入 0 0 时表示输入终止。
输出格式
每组数据第一行输出 Case x:,其中 为组别编号,从 1 开始。
接下来 行,每行输出一个整数,表示一次询问(添加边后)的桥的数量。
每组数据输出完毕后,输出一个空行。
数据范围
输入样例
3 2
1 2
2 3
2
1 2
1 3
4 4
1 2
2 1
2 3
1 4
2
1 2
3 4
0 0
输出样例
Case 1:
1
0
Case 2:
2
0
样例解释
第一组数据
初始边:1-2, 2-3
初始桥的数量:两条边都是桥(因为去掉任一条图不连通),共 2 条桥。
但题目是先询问还是先加边?注意读题:每次先添加一条边,然后询问当前桥的数量。
操作:
- 加边 1-2
此时图有边:1-2(两条?输入已经有 1-2,再加一条 1-2,但图无重边,所以不变)
所以加边前后图一样:边 1-2, 2-3,桥的数量 2 条。
但输出第一行是 1,说明可能初始时 1-2 不是桥?检查:
初始图:1-2, 2-3。如果去掉 1-2,剩下 2-3,点 1 孤立,所以 1-2 是桥。如果去掉 2-3,点 3 孤立,所以 2-3 是桥。
所以初始有 2 个桥。加边 1-2 后,因为已经有边 1-2,图无变化,还是 2 个桥。但输出第一行是 1,这意味着可能我理解错顺序,也许是询问时是在加这条新边之后(并且允许加重复边,形成重边时这两条边都不是桥),我们一步步来:
实际数据输出第一行是 1,第二行是 0。
推测过程:
初始:1-2(桥),2-3(桥),桥数 2。
第一次操作:加边 1-2(形成重边),这时 1-2 之间的两条边都不是桥,因为去掉一条还有另一条。
此时桥只剩下 2-3 一条,所以桥数 1。输出 1。
第二次操作:加边 1-3,形成环 1-2-3-1,所有边都在环上,没有桥了,桥数 0。输出 0。
这样符合输出。
第二组数据
初始边:1-2, 2-1(这是重复边?实际输入是 1-2 和 2-1,可能表示重边),2-3, 1-4。
初始图:
1 与 2 有两条平行边,1 与 4 有边,2 与 3 有边。
桥分析:1-4 是桥(去掉后 4 孤立),2-3 是桥(去掉后 3 孤立),1-2 之间的两条边都不是桥(因为有两条平行)。
初始桥数 = 2。
操作:
- 加边 1-2,那么 1-2 之间有三条平行边,显然不是桥。其他边不变,桥数还是 2。输出 2。
- 加边 3-4,现在 3 和 4 连通了,可能形成环,检查桥的变化:
原来 1-4 是桥,2-3 是桥,加边 3-4 后形成路径 4-3-2-1-4(因为 1-2 有多条边),环形成,所有边都不是桥了,桥数 0。输出 0。
最终输出:
Case 1:
1
0
Case 2:
2
0