墓地秘密
费尽周折,众人终于将将士们的遗骸运送到 KD 军事基地地下大型墓地的入口。伙伴和战友们参加了这场送葬仪式,并缓缓进入右侧通往墓地的大门。
此时,F 并没有跟上队伍。凭借敏锐的直觉,她来到左侧一面凹陷的墙前。扫去墙上的灰尘后,一个凹陷的手掌印显露出来。F 将手掌按了上去,地面突然裂开,她和厚重的墙一同坠入深渊。
众人闻声赶来,发现墙后竟隐藏着一座巨大的迷宫。迷宫一侧的墙上浮现出一行字:猛烈撞击所有发亮的机关石。当众人进入迷宫后,一块巨石从入口上方落下,将退路完全封死。巨石上写着:如果不能在规定时间内完成任务,所有人都会被困死在这里。
众人很快查明了迷宫的地形,接下来需要撞击其中的所有机关石。攻击力最强的功夫 DP 可以通过前滚翻高速移动。每次移动时,DP 可以选择上、下、左、右 个基本方向之一,沿直线滚动,并主动选择在某个位置停下;如果撞到墙或机关石,则会被迫停下。
由于高速移动后停下并改变方向十分困难,需要为 DP 制定最优的移动方案,使其撞击所有机关石所需的停下次数最少。每块机关石都必须被撞击,且被撞击后会变成普通的墙。
输入格式
第一行包含 个正整数 、 和 ,表示迷宫大小为 ,其中共有 块机关石。
接下来 行,每行包含 个字符,描述迷宫。其中,. 表示空地,# 表示墙。
接下来 行,每行包含 个正整数 、,表示一块机关石的位置。该位置在迷宫中对应的字符为 #,且不会有两块机关石位于同一位置。
最后一行包含 个正整数 、,表示 DP 的初始位置。保证 、,且位置 在迷宫中为空地。
迷宫边界外均视为墙,因此 DP 不可能滚出给定的 网格。矩阵最外圈的格子仍按照输入字符判定,可以是空地或墙。
输出格式
输出一个整数 ,表示撞击所有机关石所需的最少停下次数。
如果无法撞击所有机关石,输出 。
样例输入
4 6 3
......
....#.
.....#
....#.
2 5
3 6
4 5
1 5
样例输出
5
数据范围
- 对于 的数据,,;
- 对于 的数据,,;
- 对于 的数据,,。
来源与许可
本题题面与测试数据整理自 BZOJ。
样例 1
输入
4 6 3
......
....#.
.....#
....#.
2 5
3 6
4 5
1 5
输出
5