#P1028. [2024 实验室二面] 起床战争

[2024 实验室二面] 起床战争

题目描述

点此下载 2024 年实验室二面题解

在我的世界起床战争中有nn座编号为1,2,3,...,n1,2,3,...,n的岛屿以及mm条路,第ii条路连接着岛屿uiu_{i}viv_{i},长度为wiw_{i}。你的速度为ss(其初始化为0),通过每条路的时间为wi/(s+1)⌊w_{i}/(s+1)⌋,幸运的是地图上共有kk瓶药水且每座岛屿都至多存在一瓶药水,若你此时所在的岛屿存在药水,你可以选择喝下该药水,每瓶药水喝完就会立即消失。这些药水有22个等级(I级或II级),假设喝之前你的速度为ii,当你喝下等级为jj的药水后:

- 若i>j,i>j,你的速度将不会变化。
- 若i=j,i=j,你的速度将迅速+1。
- 若i<j,i<j,你的速度将迅速变为jj

你开始在1号岛屿上想要用最短时间去nn号岛屿。

输入描述

第一行输入3个整数n,m,kn,m,k(分别表示岛屿数,边数,药水数);;

接下来k行每行输入2个整数a,ba,b(aa表示有药水的顶点,bb表示该药水等级);;

随后m行分别输入3个整数uiviwiu_{i},v_{i},w_{i}(表示第岛屿uiu_{i}viv_{i}之间有一条路,路长为wiw_{i})。

保证不会出现自环和两点间多条边。

$2<=n<=100,1<=m<=4000,0<=k<=10,0<=a<=n,1<=b<=2,1<=u_{i},v_{i}<=n,10<=w_{i}<=1e5。$

输出描述

输出一个整数代表最少花费的时间,如果无法到达,请输出-1。

示例 1

输入

5 5 2
2 2
4 2
1 2 100
2 3 3000
1 4 100
3 4 3000
3 5 100

输出

941

说明

你的路线为11->22(此时速度变为22)->11->44(此时速度变为33)->33->55。可以验证这是最优解。