#ld2025s5. 僵尸村民

僵尸村民

题目背景

史蒂夫在下界制作了虚弱药水和金苹果。通过把虚弱药水并投掷在僵尸村民身上,再喂给他们金苹果,就可以治愈他们。然而,药水和金苹果的数量有限,史蒂夫必须合理规划行动路线,在最短的时间内治愈尽可能多的僵尸村民。

题目描述

在一个 N×MN\times M 的网格世界中,史蒂夫位于起点 SS,有僵尸村民分布在不同的位置。每个僵尸村民需要先被投掷虚弱药水,然后喂食金苹果才能被治愈。史蒂夫携带了 PP 瓶虚弱药水和 QQ 个金苹果,并且可以在网格中上下左右移动,每移动一格需要 11 秒。由于史蒂夫手速很快,所以只要史蒂夫的位置和僵尸村民的位置重合即视作完成治疗,并消耗一个药水和一个金苹果。请计算史蒂夫最多可以治愈多少个僵尸村民,并输出最短的完成时间。

输入格式

第一行包含两个整数 NNMM,表示网格的大小。

接下来 NN 行,每行 MM 个字符,表示网格布局:

  • . 表示空地

  • # 表示障碍物

  • S 表示史蒂夫的起点

  • Z 表示僵尸村民的位置

接下来一行包含两个整数 P,QP,Q,分别表示药水数量和金苹果数量。

输出格式

输出一行,包含两个整数,分别表示最多可以治愈的僵尸村民数量和最短的完成时间。如果无法治愈任何僵尸村民,输出 0 0

输入输出样例

5 5
S....
.....
..Z..
.....
....Z
2 2
2 8
7 7
S#.....
.......
..####.
##Z....
..#.###
....Z..
......Z
2 3
2 17
2 2
S.
.Z
0 3
0 0

说明 / 提示

【数据范围与约定】

对于 100%100\% 的数据:

  • 2N,M202 \le N,M \le 20

  • 1Z101 \le Z \le 10ZZ 表示僵尸村民的数量

  • 0P,Q100 \le P,Q \le 10

  • 保证所有僵尸村民的位置都是可到达的。