2514: 蒜头君救人

Memory Limit:512 MB Time Limit:2 S
Judge Style:Text Compare Creator:
Submit:1 Solved:1

Description

蒜头君是一个乐于助人的好孩子,这天他所在的乡村发生了洪水,有多名村民被困于孤岛上,于是蒜头君决定去背他们离开困境,假设蒜头君所在的村子是 m 的网格,网格中.号代表平地,#号代表该地已被洪水淹没,A、B……等大写字母表示该地有村民被困,s代表蒜头君的起点,t代表蒜头君的终点。

蒜头君的初始速度为 kkk 秒一格,他每次可以向上下左右 4 个方向中的一个移动 1 格。在背上一个村民后,他的速度可能会降低,也可能会加快,但他的速度不能快于 1 秒每格,那么蒜头君想知道,他最快需要多长时间将所有村民救出?

注意:不能在终点以外的地方放下村民;可以同时背多个村民。

Input

第一行 3 个正整数 n,m,k,分别表示村庄长度、宽度、蒜头君初始速度。

接下来 n 行,每行一个长度为 m 的字符串,表示村庄的地形,字符串意义如上所述。

接下来若干行,每行一个大写字母、一个整数,表示该编号的村民会使 k 增加 / 减少多少。行数等同于地形中大写字母的个数。大写字母按字典序,即A、B、C的顺序排列,保证前后两行的字母是连续的。

Output

输出 1 个整数,表示最小用时。

Sample Input Copy

4 4 2
s.##
..A#
.B##
...t
A -3
B 4

Sample Output Copy

17

HINT

对于 101010% 的数据,满足 1n,m51 \le n,m \le 51n,m5,村民个数为 111

对于 505050% 的数据,满足 1n,m51\le n,m\le51n,m5,村民个数小于等于 555

对于 100100100% 的数据,满足 1n,m101\le n,m\le101n,m10,村民个数小于等于 101010

加入题单

算法标签: