#H1024. 潜入计划

潜入计划

题目描述

最近,举世闻名的蓝宝石“绀青之拳”即将展出,作为闻名世界的宝石大盗,怪盗基德自然要来“光顾”一下。

现在一共有 NN 栋高楼,编号从 11NN,每栋楼都有 hih_i 层。初始的时候,基德在 11 号楼,蓝宝石在 NN 号楼。为了能够更好的潜入 NN 号楼,基德决定使用滑翔翼从空中潜入。

由于空中安保力量的部署,基德只能在其中 MM 对高楼中直接使用滑翔翼飞行。由于高楼之间的距离固定,在各对高楼间的飞行时间也是固定的。当使用滑翔翼飞行的时候,每秒钟基德的高度会下降1层楼。也就是说,当基德从第 xx 号楼的第 hh 层楼开始滑行时,从 xx 号楼 到 yy 号楼的飞行时间为 tt,他降落到 yy 号楼时将会在 hth-t 层楼。ht<0h-t < 0 或者 ht>hyh-t>h_y 时,他将不能使用滑翔翼飞行。

同时,他还能在同一栋楼中通过楼梯上下移动,也即每秒钟基德可以往上或者往下一层楼。当然,他能移动的高度只能在 00 到当前楼栋的最大层数这个范围内。

由于绀青之拳展出在 NN 号楼的楼顶,现在基德要从 11 号楼的 XX 层的位置出发,到 NN 号楼的顶楼(hNh_N 层)去。他想知道为了达成这个目标所需时间的最小值。

输入格式

第一行包含三个以空格分开的整数 NN, MMXX,意义分别与题目描述中的 NN,MMXX 相同。

接下来 NN 行中,第 i(1iN)i(1\le i\le N) 行有一个整数Hi H_{i},表示楼栋 ii 的层数有Hi H_{i} 层。

接下来 MM 行中,第 j(1jM) j(1\le j\le M) 行有三个以空格分开的整数 $A_{j},B_{j},T_{j} (1\le A_{j}, B_{j}\le N, A_{j}\ne B_{j})$,表示基德能花 Tj T_{j} 秒的时间从 Aj A_{j} 滑翔到 Bj B_{j} 或从 Bj B_{j} 滑翔到 Aj A_{j}。 对于任意 1j<kM 1\le j < k\le M,满足 (Aj,Bj)(Ak,Bk) (A_{j},B_{j})\neq (A_{k},B_{k})(Aj,Bj)(Bk,Ak)(A_{j},B_{j})\neq (B_{k},A_{k})

输出格式

输出到标准输出,仅一行一个整数,表示从 11 号楼上 XX 层处移动到 NN 号楼顶端所需时间的最小值(单位:秒)。如果不能到达目的地则输出 1-1

输入输出样例 #1

输入 #1

5 5 0
50
100
25
30
10
1 2 10
2 5 50
2 4 20
4 3 1
5 4 20

输出 #1

110

输入输出样例 #2

输入 #2

2 1 0
1
1
1 2 100

输出 #2

-1

输入输出样例 #3

输入 #3

4 3 30
50
10
20
50
1 2 10
2 3 10
3 4 10

输出 #3

100

说明/提示

【样例解释】

对于样例1,下列是其中一种最优解:

  1. 沿着 1 号楼向上爬 50 层。
  2. 从 1 号楼滑翔到 2 号楼。
  3. 从 2 号楼滑翔到 4 号楼。
  4. 从 4 号楼滑翔到 5 号楼。
  5. 沿着 5 号楼向上爬 10 层。

对于样例2,无法从 1 号楼到 2 号楼。

【数据范围】

测试点 NN\le MM\le Hi,TiH_i,T_i\le 特殊性质
20%20\% 的数据 10310^3 31033*10^3 100100
另外 30%30\% 的数据 10510^5 31053*10^5 10910^9 X=0X=0
100%100\% 的数据