密室逃脱
链接:https://ac.nowcoder.com/acm/contest/16172/B
来源:牛客网
题目描述
小明没有打过校赛但是他被拉去出题了。他非常想打校赛,但是他现在被困到了迷宫出题,现在请你帮小明逃离出题现场。该迷宫由`n * m`个格子组成的迷宫,有些格子是陷阱,用'#'表示,小明进入陷阱就会死亡,'.'表示没有陷阱。小明所在的位置用'S'表示,目的地用'T'表示。
小明只能向上下左右相邻的格子移动,每移动一次花费1秒。
有q个双向传送阵,每个传送阵各有两个口,都在迷宫的格子里,当走到或被传送到一个有传送阵的格子时,小明可以选择是否开启传送阵。如果开启传送阵,小明就会被传送到传送阵的另一端的格子里,这个过程会花费3秒;如果不开启传送阵,将不会发生任何事情,小明可以继续向上下左右四个方向移动。
一个格子可能既有多个传送阵,小明可以选择任意一个开启传送阵。使用传送阵是非常危险的,因为有的传送阵的另一端在陷阱里,如果小明使用这样的传送阵,那他就会死亡。请告诉小明活着逃离出题现场的最短时间。
解析
每个相邻的点如果不是陷阱就连一条边权为1的无向边,如果有传送阵的话且对面不是陷阱就连边权为3的无向边,跑一边dijkstra即可。

浙公网安备 33010602011771号