#P14757. [Bulgarian2018夏季赛]plovdiv

[Bulgarian2018夏季赛]plovdiv

题目描述

Deni 与欧洲许多国家的青年男女保持着友好关系。很多人计划在 2019 年前往普罗夫迪夫旅游,因为那一年该城市将成为欧洲文化之都。

通常,他们会从保加利亚边境口岸 Kalotina 入境。于是,朋友们不断向 Deni 询问:如何从 Kalotina 到达 Plovdiv。为了方便大家,Deni 想在自己的社交主页中维护从 Kalotina 到 Plovdiv 的各种可能路线信息。

她特别希望给出的路线之间没有公共道路边。但问题在于,为了迎接这一重大文化活动,当局不断修建新道路,使得不同路线的数量持续增加。Deni 因而需要不断重新计算,究竟应当展示多少条彼此边不相交的路线。

请编写程序 Plovdiv,给定一张由 NN 个城镇和 MM双向道路组成的道路网络(城镇编号为 11NN),求出从编号 11 的城镇(Kalotina)到编号 NN 的城镇(Plovdiv)之间,两两没有公共道路边的路线最大条数。

随后程序还要处理 QQ 次操作,每次操作会在两个不同城镇之间新增一条双向道路。注意,新增的道路可能连接两个原本已经有直接道路相连的城镇,也就是说图中允许出现重边

对于初始道路网络和每次加边后的道路网络,都要重新求出从 11NN 的最大边不相交路径条数。

保证在初始道路网络中,城镇 11 与城镇 NN 之间至少存在一条路径。

输入格式

第一行输入两个正整数 NNMM,表示城镇数和初始道路数。

接下来 MM 行,每行输入两个不同的正整数 xix_iyiy_i,表示城镇 xix_i 与城镇 yiy_i 之间有一条双向道路。

接下来一行输入整数 QQ,表示操作次数。

最后 QQ 行,每行输入两个不同的正整数 xix_iyiy_i,表示新增一条连接城镇 xix_i 与城镇 yiy_i 的双向道路。

输出格式

第一行输出一个整数,表示初始道路网络中从 11NN 的最大边不相交路径条数。

之后对每次操作,额外输出一行一个整数,表示加边之后的新图中从 11NN 的最大边不相交路径条数。

保证所有答案都小于 40004000

数据范围

  • 3N1003 \le N \le 100
  • 3M49503 \le M \le 4950
  • 0Q5×1040 \le Q \le 5 \times 10^4

子任务

子任务 分值 NN MM QQ
1 10 5\le 5 10\le 10 00
2 50 100\le 100 4950\le 4950
3 20 5×103\le 5 \times 10^3
4 5×104\le 5 \times 10^4

只有当某个子任务中的所有测试全部通过时,才能获得该子任务的分数。

样例 1

输入

5 7
1 2
3 5
5 4
1 5
3 2
1 3
2 5
0

输出

3

解释

城市 11 与城市 55 之间最多可以找到 33 条两两没有公共道路边的路径:

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

解释

在初始道路网络中,城市 11 与城市 55 之间只有 11 条路径。随着新道路不断加入,在最后一次操作后,图就变成了样例 1 中的道路网络。