#P16357. [2026年山东第二轮集训]刺杀

[2026年山东第二轮集训]刺杀

题目描述

有一棵包含 nn 个结点的树,第 ii 条边连接结点 uiu_iviv_i

你是一名刺客,初始时刻 00 位于结点 ss,需要前往结点 tt 执行刺杀任务。每个时刻你可以选择:

  • 停留在当前结点,等待任意非负实数时间;
  • 移动,花费 did_i 的时间沿第 ii 条边从一个端点走到另一个端点。移动过程中你始终处于这条边上,不能中途停下。

有一名守卫在树上循环巡逻。他的巡逻路线由 kk 个结点

x1,x2,,xkx_1,x_2,\ldots,x_k

描述。守卫按照

x1x2xkx1x2x_1\to x_2\to\cdots\to x_k\to x_1\to x_2\to\cdots

的顺序不断循环移动。

对于每一段 xix(imodk)+1x_i\to x_{(i\bmod k)+1},守卫都沿树上的唯一路径行进,中途不会在任何结点停留。守卫通过第 jj 条边所需的时间为 cjc_j

**冲突规则:**如果在某个时刻,你和守卫同时出现在同一条边上,包括边的内部但不包括端点,则刺杀任务失败。同时出现在某个结点上不算失败。

求完成刺杀任务,即从 ss 到达 tt,所需的最少时间。由于答案可能很大,请输出答案对 998244353998244353 取模后的结果。若无法完成任务,输出 1-1

输入格式

本题有多组测试数据。

第一行包含一个正整数 TT,表示测试数据组数。

对于每组测试数据:

  • 第一行包含两个正整数 n,kn,k,分别表示树的结点数和巡逻路线的关键点数。
  • 接下来 n1n-1 行,每行包含四个正整数 ui,vi,ci,diu_i,v_i,c_i,d_i,描述第 ii 条边:该边连接结点 uiu_iviv_i,守卫通过该边需要 cic_i 时间,刺客通过该边需要 did_i 时间。
  • 接下来一行包含 kk 个正整数 x1,x2,,xkx_1,x_2,\ldots,x_k,表示守卫巡逻路线的关键点序列。
  • 最后一行包含两个正整数 s,ts,t,表示刺客的起点和终点。

输出格式

对于每组测试数据,输出一行一个整数:

  • 若刺客可以完成任务,输出最少时间对 998244353998244353 取模后的结果;
  • 若刺客无论如何都无法完成任务,输出 1-1

样例 1

输入

1
4 2
1 2 1 3
2 3 1 1
2 4 1 1
3 4
1 2

输出

3

解释

树结构中,结点 22 为中心,分别连接结点 1,3,41,3,4

守卫巡逻

343,3\to4\to3\to\cdots,

其实际路径为

32423.3\to2\to4\to2\to3\to\cdots.

因此守卫只经过边 (2,3)(2,3) 和边 (2,4)(2,4),从不经过边 (1,2)(1,2)

刺客只需经过边 (1,2)(1,2),耗时为 d1=3d_1=3。在时刻 00 直接出发,并于时刻 33 到达,因此答案为 33

样例 2

输入

1
2 2
1 2 3 5
1 2
1 2

输出

-1

解释

树中只有唯一的一条边 (1,2)(1,2),其参数为 c=3,d=5c=3,d=5

守卫巡逻

121,1\to2\to1\to\cdots,

周期为 P=6P=6。守卫在这条边上的占用时段为

(0,3)(3,6),(0,3)\cup(3,6),

仅在时刻 0,3,6,0,3,6,\ldots 处于端点上。

刺客需要一段长度为 55 的连续安全时间窗口才能通过该边,但最长安全间隙长度仅为 00,因此无法完成任务,答案为 1-1

样例 3

输入

1
3 2
1 2 1 1
2 3 1 1
1 3
1 3

输出

4

解释

树是一条链 1231-2-3,并且所有 ci=di=1c_i=d_i=1。守卫巡逻

131,1\to3\to1\to\cdots,

周期为 P=4P=4。在一个周期内,守卫所在位置如下:

时段 守卫所在边 方向
(0,1)(0,1) (1,2)(1,2) 121\to2
(1,2)(1,2) (2,3)(2,3) 232\to3
(2,3)(2,3) 323\to2
(3,4)(3,4) (1,2)(1,2) 212\to1

一种最优方案如下:

  • 在时刻 11 从结点 11 出发,经过边 (1,2)(1,2),于时刻 22 到达结点 22
  • 等待到时刻 33,经过边 (2,3)(2,3),于时刻 44 到达结点 33

因此答案为 44

数据范围

对于全部数据:

  • 1T101\le T\le 10
  • 2n2×1052\le n\le 2\times10^52k2×1052\le k\le 2\times10^5
  • 1ui,vin1\le u_i,v_i\le n,输入保证这些边构成一棵树;
  • 1ci,di1081\le c_i,d_i\le 10^8
  • 1xin1\le x_i\le n,且 xix(imodk)+1x_i\ne x_{(i\bmod k)+1}
  • 1s,tn1\le s,t\le n,且 sts\ne t
  • 在同一个测试点中,所有测试数据的 n\sum nk\sum k 均不超过 2×1052\times10^5

dist(u,v)\operatorname{dist}(u,v) 表示 uuvv 的树上路径所经过的边数,path(u,v)\operatorname{path}(u,v) 表示该路径的边集。

子任务

子任务编号 分值 特殊限制
1 5 sstt 在树上相邻,即二者之间恰好有一条边直接相连
2 10 n50n\le50k50k\le50ci20c_i\le20di20d_i\le20
3 15 k=2k=2
4 守卫一轮巡逻经过的总边数不超过 50005000,即 $\displaystyle\sum_{i=1}^{k}\operatorname{dist}\!\left(x_i,x_{(i\bmod k)+1}\right)\le5000$
5 10 守卫一轮巡逻中,经过的边与 sstt 路径上的边的交集大小之和不超过 50005000,即 $\displaystyle\sum_{i=1}^{k}\left
6 15 树是一条链,即存在一种编号方式使边恰好连接 iii+1i+11in11\le i\le n-1
7 30 无特殊限制