题目描述
JOI 合众国有 N 个城市,编号从 1 到 N;另有 M 条道路,编号从 1 到 M。第 i 条道路(1≤i≤M)双向连接城市 Ui 与城市 Vi。
JOI 合众国由 K 个州组成,各州编号从 1 到 K。城市 j(1≤j≤N)属于州 Sj。此外,每个州至少包含一个城市。
JOI 合众国的产业大臣 K 理事长计划进行 Q 次交易。第 k 次交易(1≤k≤Q)是指将特产品从城市 Ak 运送到城市 Bk,途中可经过若干道路或城市。但仅允许经过属于州 SAk 或州 SBk 的城市(当 SAk=SBk 时,仅允许经过州 SAk 的城市);若路径经过不属于这两个州的任何城市,特产品将被窃取。
K 理事长希望调查是否存在一条运输路径,使得特产品在交易过程中不被窃取。当给出城市与道路的布局、州的归属信息以及各次交易的信息时,请编写程序,判断每次交易是否可能安全完成。
输入格式
输入通过标准输入以如下格式给出:
N M K
U1 V1
U2 V2
⋮
UM VM
S1 S2 ⋯ SN
Q
A1 B1
A2 B2
⋮
AQ BQ
输出格式
在标准输出中,输出 Q 行。第 k 行(1≤k≤Q)应输出:若第 k 次交易中特产品可以安全送达,则输出 1;否则输出 0。
4 3 2
1 2
2 3
3 4
1 2 1 2
3
1 2
1 3
1 4
1
0
1
4 2 1
1 3
2 4
1 1 1 1
4
1 2
1 3
2 3
2 4
0
1
0
1
6 5 3
1 2
3 4
5 6
1 4
3 5
1 1 2 2 3 3
4
1 4
1 5
3 6
4 3
1
0
1
1
8 11 3
4 8
1 8
4 6
3 5
2 4
7 8
6 7
3 4
1 4
2 3
3 8
2 3 1 1 2 1 2 1
10
8 2
8 1
2 7
5 3
5 7
4 8
1 8
6 8
6 5
1 8
1
1
0
1
0
1
1
1
1
1
提示
样例 1 解释
- 第 1 次交易是指:仅通过属于州 1 或州 2 的城市,将特产品从城市 1 运送到城市 2。由于路径“城市 1 → 城市 2”满足条件,因此输出 1。
- 第 2 次交易是指:仅通过属于州 1 的城市,将特产品从城市 1 运送到城市 3。不存在满足条件的运输路径,因此输出 0。
- 第 3 次交易是指:仅通过属于州 1 或州 2 的城市,将特产品从城市 1 运送到城市 4。由于路径“城市 1 → 城市 2 → 城市 3 → 城市 4”满足条件,因此输出 1。
本输入样例满足子任务 1、3、4 的约束条件。
数据范围
- 2≤N≤400000。
- 1≤M≤400000。
- 1≤K≤N。
- 1≤Ui<Vi≤N(1≤i≤M)。
- (Ui,Vi)=(Uj,Vj)(1≤i<j≤M)。
- 1≤Sj≤K(1≤j≤N)。
- 对于任意 l(1≤l≤K),均存在某个 j(1≤j≤N),使得 Sj=l。
- 1≤Q≤400000。
- 1≤Ak≤N(1≤k≤Q)。
- 1≤Bk≤N(1≤k≤Q)。
- Ak=Bk(1≤k≤Q)。
- 所有输入值均为整数。
子任务
- (5 分)N≤1000,M≤1000,Q≤1000。
(11 分)对于每个州 l(1≤l≤K),属于该州的所有城市仅可通过属于该州的道路和城市相互连通。
- (42 分)N≤80000,M≤80000,Q≤80000。
- (42 分)无额外约束。
由于没有明确的 Subtask2 的测试点,通过子任务 1、3、4 后会为分数自动增加 11 分。
翻译由 Qwen3-235B 完成