A6579 | 「NOI2021」庆典
来源NOI
时间限制1s
内存限制1024MB
通过 / 提交0/0
题目描述
C 国是一个繁荣昌盛的国家,它由 $n$ 座城市和 $m$ 条有向道路组成,城市从 $1$ 到 $n$ 编号。如果从 $x$ 号城市出发,经过若干条道路后能到达 $y$ 号城市,那么我们称 $x$ 号城市可到达 $y$ 号城市,记作 $x\Rightarrow y$。C 国的道路有一个特点:对于三座城市 $x$,$y$,$z$,若 $x\Rightarrow z$ 且 $y\Rightarrow z$,那么有 $x\Rightarrow y$ 或 $y\Rightarrow x$。
再过一个月就是 C 国成立的千年纪念日,所以 C 国的人民正在筹备盛大的游行庆典。目前 C 国得知接下来会有 $q$ 次游行计划,第 $i$ 次游行希望从城市 $s_i$ 出发,经过若干个城市后,在城市 $t_i$ 结束,且在游行过程中,**一个城市可以被经过多次**。为了增加游行的乐趣,每次游行还会**临时**修建出 $k$($0 \le k \le 2$)条有向道路专门供本次游行使用,即其它游行计划不能通过本次游行修建的道路。
现在 C 国想知道,每次游行计划可能会**经过多少座城市**。
注意:临时修建出的道路**可以不满足 C 国道路原有的特点**。
再过一个月就是 C 国成立的千年纪念日,所以 C 国的人民正在筹备盛大的游行庆典。目前 C 国得知接下来会有 $q$ 次游行计划,第 $i$ 次游行希望从城市 $s_i$ 出发,经过若干个城市后,在城市 $t_i$ 结束,且在游行过程中,**一个城市可以被经过多次**。为了增加游行的乐趣,每次游行还会**临时**修建出 $k$($0 \le k \le 2$)条有向道路专门供本次游行使用,即其它游行计划不能通过本次游行修建的道路。
现在 C 国想知道,每次游行计划可能会**经过多少座城市**。
注意:临时修建出的道路**可以不满足 C 国道路原有的特点**。
输入格式
从文件
第一行包含四个整数 $n,~m,~q,~k$,分别表示城市数、道路数、游行计划数以及每次游行临时修建的道路数。
接下来 $m$ 行,每行包含两个整数 $u,~v$,表示一条有向道路 $u \rightarrow v$。 接下来 $q$ 行,每行前两个整数 $s_i, t_i$,表示每次游行的起点与终点;这行接下来有 $k$ 对整数 $a,~b$,每对整数表示一条临时添加的有向道路 $a \rightarrow b$。
数据保证,将 C 国原有的有向道路视为无向道路后,所有城市可以互达。
celebration.in 中读入数据。第一行包含四个整数 $n,~m,~q,~k$,分别表示城市数、道路数、游行计划数以及每次游行临时修建的道路数。
接下来 $m$ 行,每行包含两个整数 $u,~v$,表示一条有向道路 $u \rightarrow v$。 接下来 $q$ 行,每行前两个整数 $s_i, t_i$,表示每次游行的起点与终点;这行接下来有 $k$ 对整数 $a,~b$,每对整数表示一条临时添加的有向道路 $a \rightarrow b$。
数据保证,将 C 国原有的有向道路视为无向道路后,所有城市可以互达。
输出格式
输出到文件
对于每次询问,输出一行一个整数表示答案。如果一次游行从起点出发无法到达终点,输出 $0$ 即可。
celebration.out 中。对于每次询问,输出一行一个整数表示答案。如果一次游行从起点出发无法到达终点,输出 $0$ 即可。
输入输出样例
输入 #1
5 6 4 1 1 2 1 3 1 4 2 5 4 5 5 4 1 4 5 1 2 3 5 3 1 2 5 2 3 4 5 1
输出 #1
4 4 4 0
对于 $100\%$ 的数据,有 $1\le n,~q \le 3\times 10^5,~$$n-1\le m\le 6\times 10^5,~$$0\le k\le 2$。
|测试点编号|$n,~q\le$|$k$|特殊性质|
|:-:|:-:|:-:|:-:|
|1 ~ 4|$5$|$=0$|无|
|5 ~ 7|$1000$|$\le 2$|无|
|8 ~ 9|$3\times 10^5$|$=0$|$m=n-1$|
|10 ~ 11|$3\times 10^5$|$=1$|$m=n-1$|
|12 ~ 14|$3\times 10^5$|$=2$|$m=n-1$|
|15 ~ 16|$3\times 10^5$|$=0$|无|
|17 ~ 19|$3\times 10^5$|$=1$|无|
|20 ~ 25|$3\times 10^5$|$=2$|无|
|测试点编号|$n,~q\le$|$k$|特殊性质|
|:-:|:-:|:-:|:-:|
|1 ~ 4|$5$|$=0$|无|
|5 ~ 7|$1000$|$\le 2$|无|
|8 ~ 9|$3\times 10^5$|$=0$|$m=n-1$|
|10 ~ 11|$3\times 10^5$|$=1$|$m=n-1$|
|12 ~ 14|$3\times 10^5$|$=2$|$m=n-1$|
|15 ~ 16|$3\times 10^5$|$=0$|无|
|17 ~ 19|$3\times 10^5$|$=1$|无|
|20 ~ 25|$3\times 10^5$|$=2$|无|
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?