Module: 弗洛伊德算法


Problem

8 /10


淘金者

Problem

寻宝者 Vasya 偶然发现了一张古代地牢的地图。地牢是一个 NM 大小的迷宫(1NM100,NM100)。迷宫的每个单元要么是空的且可穿越的,要么包含一堵墙。您只能从一个单元移动到与墙相邻的单元(例如,每个单元最多只能有 4 个相邻单元)。
 
在其中一个牢房中,有一件 Vasya 想要得到的宝藏。迷宫有 K 个入口,Vasya 可以从这些入口开始他的旅程。
 
需要确定 Vasya 需要从哪个入口开始他的旅程,以便到达宝藏的距离最短。如果有多个这样的输入,则打印编号最小的输入。
 
输入
第一行包含 2 个数字 N 和 M,它们定义了迷宫的尺寸。迷宫的描述如下:N行,每行M个字符。 0 表示该单元空闲; 1 笼子里有一堵墙。符号*表示一个有宝藏的格子(迷宫中只有一个这样的格子)。
 
第 (N+2) 行包含数字 K (1<=K<= NxM) -- 迷宫入口的数量。接下来,K 行包含输入的坐标。因此,第 i 行包含数字 xi 和 yi,这意味着第 i 个输入位于第 xi 行和第 y 列 (1xiN1yiM)。保证输入的坐标成对不同,并且所有输入都位于空单元格中。所有的入口都不在藏宝笼内。
 
输出
需要显示一个数字——需要输入的数字(编号从1开始)。如果无法到达宝藏,则打印-1。

例子 <头> <日># <正文>
输入 输出
1
5 5
00000
00000
10*00
01111
00000
4
1 1
1 5
4 1
5 5
1
2
3 3
010
1*1
010
4
1 1
1 3
3 1
3 3
-1