#L5000. 「POI 2023/2024 R3」Wyścig kolarski
「POI 2023/2024 R3」Wyścig kolarski
「POI 2023/2024 R3」Wyścig kolarski
题目描述
题目译自 XXXI Olimpiada Informatyczna – III etap Wyścig kolarski
Bajtocja 首部每年举办盛大的自行车赛。城市有 个编号从 到 的地点,连接它们的 条单向道路保证从地点 可达任意其他地点。参赛者从某地点出发,沿道路方向骑行,至少经过一条道路后返回起点 ,形成环路 $s = t_0, t_1, t_2, \ldots, t_\ell = s (\ell \geq 1)$,每对连续地点 到 存在道路。
为丰富赛道路线,组织者获市长许可,可临时调整部分道路方向:选择一个道路序列,道路两两不同,长度为 ,第 条道路从 到 。地点 无额外限制,可重复,且不要求 。随后,每条选定道路方向翻转,即从 到 。若选择空序列,则不调整。
组织者想知道,多少起点能在调整道路方向后形成从 出发并返回的环路,称其为"可行起点数"。市长还提供了 条可新增道路的清单,组织者需计算每条新增道路加入后可行起点数的变化。
你的任务是计算初始可行起点数,以及每条新增道路加入后的可行起点数。
输入格式
第一行包含两个整数 $n, m (1 \leq n \leq 1000000, 0 \leq m \leq 1000000)$,分别表示地点数和道路数。
接下来的 行,每行包含两个整数 ,表示从 到 的道路。
下一行包含一个整数 ,表示新增道路数。
接下来的 行,每行包含两个整数 ,表示从 到 的新增道路。
城市可能有多条道路连接同一对地点,或地点到自身的道路。新增道路也可能连接已连通的地点对。从地点 可达任意其他地点。
输出格式
第一行输出不新增道路时的可行起点数。
接下来的 行,第 行输出新增第 条道路后的可行起点数。
样例
输入
5 5
1 2
2 3
3 4
2 4
4 5
3
1 3
4 5
1 5
输出
3
4
4
5
解释
初始道路网络如下:
地点 为可行起点。例如,调整道路 的方向,或同时调整 和 的方向,可使 各形成返回自身的环路。
新增道路 后,网络如下:
地点 仍为可行起点,地点 因调整 方向可形成环路,成为可行起点,总计 。
新增道路 后,网络如下:
地点 仍为可行起点,地点 因调整 方向可形成环路,成为可行起点,总计 。
新增道路 后,无需调整方向,所有地点 均可形成环路,总计 。
附加样例
- ,每对地点间恰有一条道路,查询为 ,答案为 。
- $n = 5000, m = n, q = 0, a_i = i, b_i = (i \mod n) + 1$ 对于 ,答案为 。
- $n = 500000, m = 2 \cdot (n - 1), q = 0, a_i = a_{n-1+i} = 1, b_i = b_{n-1+i} = i + 1$ 对于 ,答案为 。
- $n = 1000000, m = n - 1, q = n - 3, a_i = \lfloor (i + 1)/2 \rfloor, b_i = i + 1$ 对于 ,查询为 对于 ,答案为 。
数据范围与提示
详细子任务附加限制及分值如下表所示。
子任务编号 | 附加限制 | 分值 |
---|---|---|
1 | 6 | |
2 | 15 | |
3 | 30 | |
4 | 无附加限制 | 49 |