图片被删除,或者路径改变
问题1603--lxy的通风报信

1603: lxy的通风报信

[命题人 : ]
时间限制 : 1.000 sec  内存限制 : 128 MiB

题目描述


nnn × mmm 的平面星球里( 5<=n5 <= n5<=nm<=1000m <= 1000m<=1000 ),存在着 aaa 支军队 ( 2<=a<=502 <= a <= 502<=a<=50 ) , 和 bbb 支驻扎在地图中的敌军 ( 0<=b<=n∗m−a0 <= b <= n * m - a0<=b<=nma ) ,你需要确保所有军队全部合并 .
军队坐标假设为 ( xix_ixi , yiy_iyi ) ,行军一天可以到达( xi+1x_{i + 1}xi+1 , yiy_iyi )或者 ( xi−1x_{i - 1}xi1 , yiy_iyi ) 或者( xix_ixi , yi+1y_{i + 1}yi+1 ) 或者 ( xix_ixi , yi−1y_{i - 1}yi1 ),在与另外一支军队相遇时自动合并到另一支军队,你的部队需要避免与敌军起冲突。
战事紧急,身为司令,你需要快速计算出最少多少天所有军队全部合并完毕,如果必须跟敌军发生冲突请输出 No ,否则输出最少的天数。

注意:
在一支军队移动时,其他军队不可移动。
军队合并是依次进行的,且起点和终点都必须是军队,起点终点不固定,每次行军,可以任意指定两个现存在地图中的不同军队作为起点终点。例如有三个军队A,B,C,A->B,A合并B,B再合并C。也可以A->B,C->B。

输入


输入nnn ,mmm5<=n5 <= n5<=n, m<=1000m <= 1000m<=1000
输入nnn行,每行mmm列,
每列用∗* 表示军队
# 表示敌军
... 表示可移动区域。

输出

如果军队之间可以全部合并,输出需要多少步
反之输出No

样例输入 Copy

5 5
.#..#
..#*.
*...*
#.###
.....

样例输出 Copy

6

提示

样例一说明:

样例2:
输入:
5 5
#####
#....
***##
*#..#
*####
输出:
4