Description
ryz被困在了一个n*m四连通网格图的迷宫中,每走一步需要消耗一定的体力,消耗的体力等于格子的高度差的平方。在迷宫的某一些格子上有体力药水,可以恢复ryz一定的体力。现在ryz希望消耗最少的体力值到达迷宫出口,请你计算出这个最小的体力值。
你可以认为ryz一开始有足够多的体力。
Input
第一行7个正整数n,m,k,sx,sy,tx,ty分别表示迷宫的长度,宽度,体力药水的数量,起点坐标和终点坐标。
接下来是一个n行m列的矩阵,描述每一个格子的高度。
接下来k行,每行3个整数x,y,s,表示在第x行第y列的这个格子中有一瓶能够恢复s体力的药水。
Output
仅一个整数,表示最小消耗的体力值,有可能是负数。
Sample Input
3 3 1 1 1 1 3
1 2 3
4 3 0
5 6 5
3 3 13
Sample Output
-1
Data Constraint
对于20%的数据,k=0。
对于60%的数据,n<=20,m<=20,k<=10
对于100%的数据,n*m<=1000,k<=15,s<=10^5,0<=h<10
Solution
对于20%的数据,直接SPFA找出最短路就好了。
对于100%,我们观察发现,K最多只有15,点阵也最多只有1000。由于SPFA的复杂度,我们可以求出15个点两两之间的最短路。 求出以后,这