P1085

墓地秘密

墓地秘密

费尽周折,众人终于将将士们的遗骸运送到 KD 军事基地地下大型墓地的入口。伙伴和战友们参加了这场送葬仪式,并缓缓进入右侧通往墓地的大门。

此时,F 并没有跟上队伍。凭借敏锐的直觉,她来到左侧一面凹陷的墙前。扫去墙上的灰尘后,一个凹陷的手掌印显露出来。F 将手掌按了上去,地面突然裂开,她和厚重的墙一同坠入深渊。

众人闻声赶来,发现墙后竟隐藏着一座巨大的迷宫。迷宫一侧的墙上浮现出一行字:猛烈撞击所有发亮的机关石。当众人进入迷宫后,一块巨石从入口上方落下,将退路完全封死。巨石上写着:如果不能在规定时间内完成任务,所有人都会被困死在这里。

众人很快查明了迷宫的地形,接下来需要撞击其中的所有机关石。攻击力最强的功夫 DP 可以通过前滚翻高速移动。每次移动时,DP 可以选择上、下、左、右 44 个基本方向之一,沿直线滚动,并主动选择在某个位置停下;如果撞到墙或机关石,则会被迫停下。

由于高速移动后停下并改变方向十分困难,需要为 DP 制定最优的移动方案,使其撞击所有机关石所需的停下次数最少。每块机关石都必须被撞击,且被撞击后会变成普通的墙。

输入格式

第一行包含 33 个正整数 NN、MM 和 TT,表示迷宫大小为 N×MN\times M,其中共有 TT 块机关石。

接下来 NN 行,每行包含 MM 个字符,描述迷宫。其中,. 表示空地,# 表示墙。

接下来 TT 行,每行包含 22 个正整数 XX、YY,表示一块机关石的位置。该位置在迷宫中对应的字符为 #,且不会有两块机关石位于同一位置。

最后一行包含 22 个正整数 X0X_0、Y0Y_0,表示 DP 的初始位置。保证 1≤X0≤N1\le X_0\le N、1≤Y0≤M1\le Y_0\le M,且位置 (X0,Y0)(X_0,Y_0) 在迷宫中为空地。

迷宫边界外均视为墙,因此 DP 不可能滚出给定的 N×MN\times M 网格。矩阵最外圈的格子仍按照输入字符判定,可以是空地或墙。

输出格式

输出一个整数 ANSANS,表示撞击所有机关石所需的最少停下次数。

如果无法撞击所有机关石,输出 −1-1。

样例输入

4 6 3
......
....#.
.....#
....#.
2 5
3 6
4 5
1 5

样例输出

5

数据范围

  • 对于 10%10\% 的数据,N,M≤10N,M\le 10,T≤2T\le 2;
  • 对于 40%40\% 的数据,N,M≤50N,M\le 50,T≤10T\le 10;
  • 对于 100%100\% 的数据,N,M≤100N,M\le 100,T≤15T\le 15。

来源与许可

本题题面与测试数据整理自 BZOJ。

样例 1

输入

4 6 3
......
....#.
.....#
....#.
2 5
3 6
4 5
1 5

输出

5