#P9432. [NAPC-#1] rStage5 - Hard Conveyors

    ID: 8666 Type: RemoteJudge 2000ms 256MiB Tried: 0 Accepted: 0 Difficulty: 5 Uploaded By: Tags>O2优化最近公共祖先,LCA树链剖分

[NAPC-#1] rStage5 - Hard Conveyors

题目背景

本题新增两组 hack 数据。


更硬,所以可能就更脆,所以更容易被击破(确信)。

您只花了两个小时就秒掉了正城 s1~s10,来秒逆城了。

题目描述

本题与 Stage5 的区别是合法路径定义不同(简要题意中加粗部分不同)。(其实还有:样例不同,数据不同,部分分不同。)

【简要题意】

给定一棵 nn 个节点的无根树以及树上的 kk 个关键节点,边有边权(即边的长度)。qq 次询问,每次给出 s,ts,t,问从 sstt 且经过至少一个关键节点的路径的最短长度。

输入格式

第一行三个正整数 n,q,kn, q, k,表示树的节点个数,询问次数和关键节点个数。

接下来 n1n-1 行,每行三个正整数 u,v,wu, v, w,表示树中存在边 (u,v)(u, v),边权为 ww。保证输入构成一棵树。

接下来一行 kk 个两两不同的正整数,表示关键节点的编号。

接下来 qq 行,每行两个正整数 s,ts, t,表示一次询问。

输出格式

对于每次询问输出一行一个非负整数,表示此次询问的最短合法路径长度。

注意,合法路径可以不经过任何边,此时路径长为 00

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

提示

【数据范围】

upd at 2023-6-25:新增了两组 hack 数据,将其置于 Sub6\text{Sub}\textsf6 中,不记分数。

本题采用捆绑测试。

$$\def\r{\cr\hline} \def\None{\text{None}} \def\arraystretch{1.5} \begin{array}{c|c|c|c} \textbf{Subtask} & \text{测试点编号} & \textbf{Sp. Constraints} & \textbf{Score}\r \textsf1&1\sim2 & k=n & 5 \r \textsf2&16\sim20 &k=1,n\leqslant10^3,q\leqslant10^3 & 15 \r \textsf3&21\sim25 & n\leqslant10^3,q\leqslant10^3 & 15 \r \textsf4&3\sim7 & q=1 & 15 \r \textsf5&8\sim15 & - & 50 \r \textsf6&26\sim27 & - & 0 \r \end{array} $$

对于 100%100\% 的数据,1n1051\leqslant n\leqslant 10^51q1051\leqslant q\leqslant 10^51kn1\leqslant k\leqslant n1w1041\leqslant w\leqslant 10^41u,v,s,tn1\leqslant u,v,s,t\leqslant n

【样例解释 #1】

图中加粗节点表示关键点。

对于每组询问,以下为一种最优路径(最优路径可能有多条):

  1. 2132\to1\to3
  2. 212\to1
  3. 71217\to1\to2\to1
  4. 4354\to3\to5
  5. 6266\to2\to6
  6. 22(合法路径可以不经过任何边,此时路径长为 00)。