U330374 密室逃脱
题目背景
小H 被 坏人 小Y 带到了一处密室,为了逃离该密室,小H 在一天晚上趁着 小Y 睡着的时候,悄悄的逃了出去……
题目描述
该密室是由 $h$ 层楼组成的,每一层有 $n$ 行 $m$ 列,小H 每次可以移动到相邻六个区块(上、下、左、右、前、后)中的任意一个,密室中墙壁不可通行。
小H 一开始拥有 $v$ 的体力值,当 小H 拥有足够的体力值($v \geq w$)时,可以拆卸陷阱(此动作瞬间完成),拆卸后体力值减少 $w$。如果遇到门且 小H 手上拥有钥匙,便可以打开并继续逃离,任意一扇门被打开后不会再被关上。
逃离成功当且仅当 小H 到达除上方与下方外任意密室之外的地方。
由于 小Y 心狠狡诈,不想让 小H 那么容易的逃离,他把钥匙藏在了密室中的一些空地中,而且密室中已走过的路不能再折返,因为邪恶的 小Y 偷偷在密室中设置了机关……为了让 小H 逃离 小Y 的魔爪,请你帮他预算一下,小H 能否逃离该密室。
**PS:** 小H 手上的钥匙数量可以累计,当使用一把钥匙开完一扇门以后便会少一把钥匙。
输入格式
第一行输入三个整数 $h$, $n$, $m$,分别表示该密室的层数、行数与列数。
第二行输入三个整数 $sz$, $sx$, $sy$,分别表示 小H 一开始所在密室中的层数、行数、列数。
第三行输入两个整数 $v$, $w$,分别表示 小H 一开始的体力值和拆卸每个陷阱需要的体力值。
接下来输入 $h$ 块,第 $k$ 块表示密室第 $k$ 层,每块输入 $n$ 行 $m$ 列整数,分别对应密室中该地的状况,包括:
- $1$: 空地
- $2$: 墙壁
- $3$: 陷阱
- $4$: 门
- $5$: 钥匙
**PS:** 一旦经过钥匙地域即算已捡起该区域钥匙,且不能重复捡起同一区域的钥匙。
保证 小H 的初始位置不会是墙壁、陷阱或门。
输出格式
为了让 小H 尽快逃离该密室,请输出 小H 能否(`Yes`|`No`)逃出去。
如果 小H 能够逃出去,那么请在第二行输出 小H 逃离密室的最短时间(小H 移动一步需要 $1s$)。
**PS:** 从密室逃离至外界也需要 $1s$。
说明/提示
#### 样例1 解释:
小H 一开始在 $(2, 2, 2)$,时间为 $0s$
接下来往下一层 $(1, 2, 2)$,时间为 $1s$
然后向右走一格获得钥匙 $(1, 2, 3)$,时间为 $2s$
最后向右或向后开门 $(1, 2, 4) | (1, 3, 2)$,时间为 $3s$
密室逃脱成功 $4s$
---
对于 $40\%$ 的数据,$1 \leq h \leq 12$,$1 \leq n, m \leq 30$,$1 \leq v \leq 25$,$1 \leq w \leq 3$
对于 $100\%$ 的数据,$1 \leq h \leq 160$,$1 \leq n, m \leq 400$,$1 \leq sz \leq h$,$1 \leq sx \leq n$,$1 \leq sy \leq m$,$1 \leq v \leq 200$,$1 \leq w \leq 15$