#P14757. [Bulgarian2018夏季赛]plovdiv
[Bulgarian2018夏季赛]plovdiv
题目描述
Deni 与欧洲许多国家的青年男女保持着友好关系。很多人计划在 2019 年前往普罗夫迪夫旅游,因为那一年该城市将成为欧洲文化之都。
通常,他们会从保加利亚边境口岸 Kalotina 入境。于是,朋友们不断向 Deni 询问:如何从 Kalotina 到达 Plovdiv。为了方便大家,Deni 想在自己的社交主页中维护从 Kalotina 到 Plovdiv 的各种可能路线信息。
她特别希望给出的路线之间没有公共道路边。但问题在于,为了迎接这一重大文化活动,当局不断修建新道路,使得不同路线的数量持续增加。Deni 因而需要不断重新计算,究竟应当展示多少条彼此边不相交的路线。
请编写程序 Plovdiv,给定一张由 个城镇和 条双向道路组成的道路网络(城镇编号为 到 ),求出从编号 的城镇(Kalotina)到编号 的城镇(Plovdiv)之间,两两没有公共道路边的路线最大条数。
随后程序还要处理 次操作,每次操作会在两个不同城镇之间新增一条双向道路。注意,新增的道路可能连接两个原本已经有直接道路相连的城镇,也就是说图中允许出现重边。
对于初始道路网络和每次加边后的道路网络,都要重新求出从 到 的最大边不相交路径条数。
保证在初始道路网络中,城镇 与城镇 之间至少存在一条路径。
输入格式
第一行输入两个正整数 和 ,表示城镇数和初始道路数。
接下来 行,每行输入两个不同的正整数 和 ,表示城镇 与城镇 之间有一条双向道路。
接下来一行输入整数 ,表示操作次数。
最后 行,每行输入两个不同的正整数 和 ,表示新增一条连接城镇 与城镇 的双向道路。
输出格式
第一行输出一个整数,表示初始道路网络中从 到 的最大边不相交路径条数。
之后对每次操作,额外输出一行一个整数,表示加边之后的新图中从 到 的最大边不相交路径条数。
保证所有答案都小于 。
数据范围
子任务
| 子任务 | 分值 | |||
|---|---|---|---|---|
| 1 | 10 | |||
| 2 | 50 | |||
| 3 | 20 | |||
| 4 |
只有当某个子任务中的所有测试全部通过时,才能获得该子任务的分数。
样例 1
输入
5 7
1 2
3 5
5 4
1 5
3 2
1 3
2 5
0
输出
3
解释
城市 与城市 之间最多可以找到 条两两没有公共道路边的路径:
1-5
1-3-5
1-2-5
样例 2
输入
5 4
1 2
3 5
5 4
1 5
3
3 2
1 3
2 5
输出
1
2
2
3
解释
在初始道路网络中,城市 与城市 之间只有 条路径。随着新道路不断加入,在最后一次操作后,图就变成了样例 1 中的道路网络。