#P6436. 「JOISC 2023 Day3」旅行

「JOISC 2023 Day3」旅行

题目描述

题目译自 JOISC 2023 Day3 T3 「旅行 / Tourism

JOI 国是一个由 NN 个岛屿构成的岛国,这 NN 个岛屿编号为 11NN。这些岛屿由 N1N-1 座桥相连,这些桥编号为 11N1N-1。桥 i (1iN1)i\ (1\le i\le N-1) 双向连接岛屿 AiA_iBiB_i。保证可以从一座岛屿出发,经过一定数量的桥到达任意其他岛屿。

在 JOI 国中,有 MM 个旅游景点,从 11MM 编号。景点 j (1jM)j\ (1\le j\le M) 位于岛屿 CjC_j 上。

QQ 个旅行者,编号为 11QQ。他们计划去 JOI 国旅游。每个旅行者按如下方式旅游:

  1. 旅行者选择一个岛屿 x (1xN)x\ (1\le x\le N),并乘飞机抵达岛屿 xx
  2. 旅行者执行如下操作若干次,操作的顺序和种类任意
    • 旅行者选择目前岛上的一个景点并游览它
    • 旅行者通过一座桥移动到其他岛屿
  3. 旅行者乘飞机离开 JOI 国

旅行者 k (1kQ)k\ (1\le k\le Q) 想要游览所有景点 Lk,Lk+1,,RkL_k,L_k+1,\ldots,R_k。然而,由于预算有限,旅行者 kk 希望最小化至少去过一遍的岛屿数。

给定 JOI 国和旅行者的信息,写一个程序计算对于每个 k (1kQ)k\ (1\le k\le Q),旅行者 kk 至少去过一遍的岛屿数的最小值。

输入格式

第一行三个整数 N,M,QN,M,Q

接下来 N1N-1 行,每行两个整数 Ai,BiA_i,B_i

接下来一行 MM 个整数 C1,C2,,CMC_1,C_2,\ldots,C_M

接下来 QQ 行,每行两个整数 Lk,RkL_k,R_k

输出格式

输出 QQ 行,第 kk 行输出一个整数,表示旅行者 kk 至少去过一遍的岛屿数的最小值。

7 6 2
1 2
1 3
2 4
2 5
3 6
3 7
2 3 6 4 5 7
1 3
4 6

4
6

8 8 9
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 6 4 3 5 2 4 7
3 5
4 6
6 8
1 4
2 3
6 8
5 5
2 8
1 2

3
4
6
6
3
6
1
6
3

10 7 9
6 5
3 6
9 3
8 3
7 8
7 1
2 5
7 10
8 4
9 4 10 1 10 7 6
4 4
1 3
1 3
6 7
3 6
3 3
1 5
2 5
1 2

1
6
6
4
3
1
7
5
4

数据范围与提示

对于所有输入数据,满足:

  • 1N,M,Q1051\le N,M,Q\le 10^5
  • 1Ai,BiN1\le A_i,B_i\le N
  • 保证从一座岛屿出发,可以经过一定数量的桥到达任意其他岛屿
  • 1CjN1\le C_j\le N
  • 1LkRkM1\le L_k\le R_k\le M

详细子任务附加限制及分值如下表所示。

子任务编号 附加限制 分值
11 N,M,Q300N,M,Q\le 300 55
22 N,M,Q2 000N,M,Q\le 2\ 000
33 Ai=i,Bi=i+1A_i=i,B_i=i+1 77
44 L1=1,Rk+1=Lk+1,RQ=ML_1=1,R_k+1=L_{k+1},R_Q=M 1818
55 Ai=i+12,Bi=i+1A_i=\lfloor\frac{i+1}{2}\rfloor,B_i=i+1,这里 x\lfloor x\rfloor 表示不超过 xx 的最大整数 2424
66 无附加限制 4141