#P14329. [JOI2022 预选赛 R2] 交易计划 / Trade Plan

[JOI2022 预选赛 R2] 交易计划 / Trade Plan

题目描述

JOI 合众国有 N N 个城市,编号从 1 1 到 N N ;另有 M M 条道路,编号从 1 1 到 M M 。第 i i 条道路(1≤i≤M 1 \le i \le M )双向连接城市 Ui U_i 与城市 Vi V_i 。

JOI 合众国由 K K 个州组成,各州编号从 1 1 到 K K 。城市 j j (1≤j≤N 1 \le j \le N )属于州 Sj S_j 。此外,每个州至少包含一个城市。

JOI 合众国的产业大臣 K 理事长计划进行 Q Q 次交易。第 k k 次交易(1≤k≤Q 1 \le k \le Q )是指将特产品从城市 Ak A_k 运送到城市 Bk B_k ,途中可经过若干道路或城市。但仅允许经过属于州 SAk S_{A_k} 或州 SBk S_{B_k} 的城市(当 SAk=SBk S_{A_k} = S_{B_k} 时,仅允许经过州 SAk S_{A_k} 的城市);若路径经过不属于这两个州的任何城市,特产品将被窃取。

K 理事长希望调查是否存在一条运输路径,使得特产品在交易过程中不被窃取。当给出城市与道路的布局、州的归属信息以及各次交易的信息时,请编写程序,判断每次交易是否可能安全完成。

输入格式

输入通过标准输入以如下格式给出:

N N M M K K

U1 U_1 V1 V_1

U2 U_2 V2 V_2

⋮ \vdots

UM U_M VM V_M

S1 S_1 S2 S_2 ⋯ \cdots SN S_N

Q Q

A1 A_1 B1 B_1

A2 A_2 B2 B_2

⋮ \vdots

AQ A_Q BQ B_Q

输出格式

在标准输出中,输出 Q Q 行。第 k k 行(1≤k≤Q 1 \le k \le Q )应输出:若第 k k 次交易中特产品可以安全送达,则输出 1 1 ;否则输出 0 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 1 。
  • 第 2 次交易是指:仅通过属于州 1 的城市,将特产品从城市 1 运送到城市 3。不存在满足条件的运输路径,因此输出 0 0 。
  • 第 3 次交易是指:仅通过属于州 1 或州 2 的城市,将特产品从城市 1 运送到城市 4。由于路径“城市 1 → 城市 2 → 城市 3 → 城市 4”满足条件,因此输出 1 1 。

本输入样例满足子任务 1、3、4 的约束条件。

数据范围

  • 2≤N≤400 000 2 \le N \le 400\,000 。
  • 1≤M≤400 000 1 \le M \le 400\,000 。
  • 1≤K≤N 1 \le K \le N 。
  • 1≤Ui<Vi≤N 1 \le U_i < V_i \le N (1≤i≤M 1 \le i \le M )。
  • (Ui,Vi)≠(Uj,Vj) (U_i, V_i) \ne (U_j, V_j) (1≤i<j≤M 1 \le i < j \le M )。
  • 1≤Sj≤K 1 \le S_j \le K (1≤j≤N 1 \le j \le N )。
  • 对于任意 l l (1≤l≤K 1 \le l \le K ),均存在某个 j j (1≤j≤N 1 \le j \le N ),使得 Sj=l S_j = l 。
  • 1≤Q≤400 000 1 \le Q \le 400\,000 。
  • 1≤Ak≤N 1 \le A_k \le N (1≤k≤Q 1 \le k \le Q )。
  • 1≤Bk≤N 1 \le B_k \le N (1≤k≤Q 1 \le k \le Q )。
  • Ak≠Bk A_k \ne B_k (1≤k≤Q 1 \le k \le Q )。
  • 所有输入值均为整数。

子任务

  1. (5 分)N≤1 000 N \le 1\,000 ,M≤1 000 M \le 1\,000 ,Q≤1 000 Q \le 1\,000 。
  2. (11 分)对于每个州 l l (1≤l≤K 1 \le l \le K ),属于该州的所有城市仅可通过属于该州的道路和城市相互连通。
  3. (42 分)N≤80 000 N \le 80\,000 ,M≤80 000 M \le 80\,000 ,Q≤80 000 Q \le 80\,000 。
  4. (42 分)无额外约束。

由于没有明确的 Subtask2 的测试点,通过子任务 1、3、4 后会为分数自动增加 11 分。

翻译由 Qwen3-235B 完成