第十三届安徽省大学生程序设计大赛_C搜索航桥
2022-07-02 17:10 作者:Clayton_Zhou | 我要投稿
题目描述
天宫四号与空间站的对接令人兴奋,随着国家的航天事业的蓬勃发展,空间站与空间站之间的联系愈发紧密。为了以后能够知道哪些空间站可以相连,假设现在有N个空间站,有M条航道相连,如果某条航道被废弃后,A空间站无法到达B空间站,那么称这条航道为A,B空间站之间的航桥,现在我们想实时知道一些空间站之间有几条航桥。在询问的过程中,有些航道会被废弃掉。 你能想出最快速的算法,找出航桥吗?
输入说明
第一行N,M表示有N个空间站,M条航道,1 ≤ N ≤ 30000,1 ≤ M ≤ 100000,询问数加删除数不多于40000。
接下来M行表示M条航道,每行两个整数,表示两个空间站有航道相连。然后每行三个整数C、A、B:如果C=0表示A和B空间站之间的航道被永久删除;如果C=1表示询问A和B空间站间有几条航桥;如果C=-1则输入数据结束。保证空间站任意时刻都联通。
输出说明
对于每一个询问,给出航桥的数量,每次询问结果一行。
输入样例
5 5
1 2
1 3
3 4
4 5
4 2
1 1 5
0 4 2
1 5 1
-1
输出样例
1
3
大致思路:
在一棵树上,多加一条边,连接这个边两顶点的简单路径,就必然不可能是题目说的那种割边。故简单路径上每个顶点权重为0
那么简单路径上所有的顶点就是只有0和1两种权值,两点之间割边数量就是两点之间顶点权为1的数量。