hnu实验五 图 踩点上课

实验五 图编程题1. 踩点上课【问题描述】 阿迪通常开着闹钟睡觉,这样他才不至于上课迟到。 他想知道能否赶上第一节课,为了不迟到,他需要知道从家到学校所需要的最少时间是多少。 阿迪生活的城市是一个 n×m 的矩形区域,其中每个单元( i, j )由一个数字 aij 来表示数字为 -1 时表示该单元被占用,禁止通行数字为 0 时表示该单元是空闲的,阿迪可以穿过数字为 x (1≤x ≤109) 时表示该单元包含时空通道,需要耗费的时间成本为 x,包含时空通道的单元也是空闲的,可以自由通行 从任何包含时空通道的单元出发,阿迪可以去往任何包含时空通道的其他单元,从时空通道( i, j )到时空通道( x, y ) 的时间成本总和为 aij + axy。 除了在两个包含时空通道的单元之间移动,他也可以在具有相邻边的未被占用的单元之间移动,耗费的时间为 w 。实际上,他也可以进入一个包含时空通道的单元而不使用它这个通道。 开始时,阿迪处在左上角单元 (1, 1),而学校位于右下角(n, m)。【输入形式】 输入的第一行包含三个整数 n、m 和 w (2 ≤ n、m ≤ 2×103,1≤ w ≤109),此处 n 和 m 是城市的大小,w 是在未被占用的单元之间移动所需要的时间。 接下来的 n 行每行包含 m 个数 (-1 ≤ ai ≤ 109),表示对单元的描述。 输入保证单元(1, 1)和(n, m)是空闲的。

【输出形式】 输出为一个数,表示阿迪去往学校需要花费的最少时间,如果他不能去到学校,则输出-1。【样例输入】5 5 10 -1 0 1 -10 20 0 0 -1-1 -1 -1 -1 -13 0 0 0 0-1 0 0 0 0

【样例输出】141b8af867382644ee8c3f7262bce53b48.png

代码如下:

https://share.weiyun.com/v2UGz1mV

代码中有少部分样例会出现运行时过长和输出错误,但代码的整体思路就是这样的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值