#P3259. [JLOI2014] 路径规划

[JLOI2014] 路径规划

题目描述

相信大家都用过地图上的路径规划功能,只要输入起点终点就能找出一条最优路线。现在告诉你一张地图的信息,请你找出最优路径(即最短路径)。考虑到实际情况,一辆车加满油能开的时间有限,limitlimit,所以在地图上增加了几个加油站。

地图由点和双向边构成,每个点代表一个路口,也有可能是加油站或起点终点。有些路口还装有红绿灯。由于经过太多的红绿灯会让人感到不爽,所以请求在经过不超过 kk 个红绿灯的情况下,最少平均花费多少时间能从起点到终点。保证起点终点和加油站没有红绿灯。(题目不考虑最坏情况下能否加到油,只考虑平均花费时间的前提下,车能否到达加油站加油)。

注意:

  1. limitlimit 指的是车最多能走多长时间,可以看作车的油箱,是不能叠加的(比如不能连续经过多个加油站后剩余能走的时间 >limit>limit)。
  2. 与上面类似,一个加油站最多只能加到 limitlimit,不能累加。
  3. 不管在加油站加多少油,反正加一次耗费的时间都是 costcost
  4. 经过加油站可以不加油。

输入格式

第一行输入 55 个整数 n,m,k,limit,costn,m,k,limit,cost,表示有 nn 个点 mm 条边,车能开 limitlimit 长的时间,及加油所花时间 costcost

接下来 nn 行输入每个点信息,包括点的名称(带 gas 的为加油站,start 为起点,end 为终点),及该点是否有红绿灯,用 a,ba,b 表示。(若为 a=0a=0 则表示没有,aa 表示红灯长,bb 表示绿灯长)。

接下来 mm 行输入每条边信息,包括边的起点,终点,边的名称,通过该边所花时长。

保证点和边名的长度不大于 2020,只有大小写字母,数字及 _ 组成。

输出格式

一行输出最少平均花费时长。

5 8 1 100 10
start 0 0
azhan 10 10
xxgasxx 0 5
bpoint 20 5
end 0 100
start azhan sdf 30
azhan xxgasxx ewfg 20
start end r3tg 200
end azhan 1xq2 70
azhan bpoint gg 10
xxgasxx bpoint kk 30
bpoint end dsg 40
xxgasxx end t_s 100
162.500

提示

1414 组数据。

  • 其中 33 组数据,满足 1n<101 \le n<101m<201 \le m<201k<51 \le k<5
  • 另有 33 组没有红绿灯。

所有数据满足 1n100001 \le n \le 100001m200001 \le m \le 200001k101 \le k \le 10,加油站 50\le 50