题目描述
给你一棵 n 个点的无根树。
树上的每条边具有颜色。一共有 m 种颜色,编号为 1 到 m,第 i 种颜色的权值为 ci。
对于一条树上的简单路径,路径上经过的所有边按顺序组成一个颜色序列,序列可以划分成若干个相同颜色段。定义路径权值为颜色序列上每个同颜色段的颜色权值之和。
请你计算,经过边数在 l 到 r 之间的所有简单路径中,路径权值的最大值。
输入格式
第一行,四个整数 n, m, l, r。
第二行,m 个整数 c1, c2, …, cm,由空格隔开,依次表示每个颜色的权值。
接下来 n−1 行,每行三个整数 u, v, c,表示点 u 和点 v 之间有一条颜色为 c 的边。
输出格式
输出一行,一个整数,表示答案。
样例 1
输入
text
5 3 1 4
-1 -5 -2
1 2 1
1 3 1
2 4 2
2 5 3
输出
text
-1
解释
颜色权值均为负,最优路径为 (1,2) 或 (1,3)(长度 1 条边,权值 −1)。
样例 2
输入
text
8 4 3 4
-7 9 6 1
1 2 1
1 3 2
1 4 1
2 5 1
5 6 2
3 7 1
3 8 3
输出
text
11
解释
最优路径为 (3,1,2,5,6),其颜色序列为 (2,1,1,2),颜色段为 [2], [1,1], [2],权值之和为 6+(−7)+6=11(按样例中的 c1=−7, c2=9, c3=6, c4=1 计算:等等,检查一下:题目给出的 c2=9,但路径中颜色 2 出现两次分别在不同颜色段?这里不对,重看)
让我们仔细分析样例 2 给出的数据:
c1=−7(颜色 1)
c2=9(颜色 2)
c3=6(颜色 3)
c4=1(颜色 4)
路径 (3,1,2,5,6) 的边颜色序列:
(3,1):颜色 2
(1,2):颜色 1
(2,5):颜色 1
(5,6):颜色 2
所以颜色序列是 (2,1,1,2),划分为颜色段:
第一段 [2],权值 c2=9
第二段 [1,1],权值 c1=−7
第三段 [2],权值 c2=9
总和 9+(−7)+9=11,正确。
数据范围
n 的范围未明确给出,但根据 BJOI 2017 原题,n≤2×105 左右。
m≤n
1≤l≤r≤n−1