3763. 【NOIP模拟 8.12】逃离迷宫(escape)

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个点两两之间的最短路。 求出以后,这

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值