最佳加油路径 - 代码源竞赛平台

题目描述

蜗蜗准备开车旅行。地图上有 nn 个城市,编号为 11 到 nn,城市之间的道路构成一棵树。第 ii 个城市有一个加油站,蜗蜗经过这个城市时最多可以补充 wiw_i 升汽油。通过一条长度为 cc 的道路需要消耗 cc 升汽油。

蜗蜗可以任选起点和终点,并沿着它们之间的简单路径行驶,也可以只停留在一个城市。起点加油前的油量为 00,起点和终点都可以加油。行驶过程中,油量不能变成负数。

请你求出蜗蜗到达终点并加油后,最多能够剩下多少升汽油。

输入格式

第一行包含一个整数 nn,表示城市的数量。

第二行包含 nn 个整数 w1,w2,…,wnw_1,w_2,\ldots,w_n,表示每个城市最多可以补充的汽油量。

接下来 n−1n-1 行,每行包含三个整数 u,v,cu,v,c,表示城市 uu 和城市 vv 之间有一条长度为 cc 的无向道路。

输出格式

输出一行一个整数,表示到达终点并加油后最多能够剩下的汽油量。

样例

3
4 1 5
1 2 2
2 3 3
5

样例解释

蜗蜗可以按照城市 1,2,31,2,3 的顺序行驶。

在城市 11 加油后有 44 升汽油;到达城市 22 并加油后有 4−2+1=34-2+1=3 升;到达城市 33 并加油后有 3−3+5=53-3+5=5 升。

直接选择城市 33 作为起点和终点,也可以剩下 55 升汽油。

数据范围

对于 100% 的数据,保证 1≤n≤3×1051\le n\le 3\times 10^5,0≤wi≤1090\le w_i\le 10^9,1≤u,v≤n1\le u,v\le n,1≤c≤1091\le c\le 10^9。

输入的道路构成一棵树。