题目描述
在 nnn × mmm 的平面星球里( 5<=n5 <= n5<=n, m<=1000m <= 1000m<=1000 ),存在着 aaa 支军队 ( 2<=a<=502 <= a <= 502<=a<=50 ) , 和 bbb 支驻扎在地图中的敌军 ( 0<=b<=n∗m−a0 <= b <= n * m - a0<=b<=n∗m−a ) ,你需要确保所有军队全部合并 .
军队坐标假设为 ( xix_ixi , yiy_iyi ) ,行军一天可以到达( xi+1x_{i + 1}xi+1 , yiy_iyi )或者 ( xi−1x_{i - 1}xi−1 , yiy_iyi ) 或者( xix_ixi , yi+1y_{i + 1}yi+1 ) 或者 ( xix_ixi , yi−1y_{i - 1}yi−1 ),在与另外一支军队相遇时自动合并到另一支军队,你的部队需要避免与敌军起冲突。
战事紧急,身为司令,你需要快速计算出最少多少天所有军队全部合并完毕,如果必须跟敌军发生冲突请输出 No ,否则输出最少的天数。
注意:
在一支军队移动时,其他军队不可移动。
军队合并是依次进行的,且起点和终点都必须是军队,起点终点不固定,每次行军,可以任意指定两个现存在地图中的不同军队作为起点终点。例如有三个军队A,B,C,A->B,A合并B,B再合并C。也可以A->B,C->B。 输入
输入nnn ,mmm(5<=n5 <= n5<=n, m<=1000m <= 1000m<=1000)
输入nnn行,每行mmm列,
每列用∗*∗ 表示军队
# 表示敌军
... 表示可移动区域。
输出
如果军队之间可以全部合并,输出需要多少步 反之输出No
样例输入 Copy
5 5
.#..#
..#*.
*...*
#.###
.....
样例输出 Copy
6
提示
样例一说明:
样例2:
输入:
5 5
#####
#....
***##
*#..#
*####
输出:
4
样例2:
输入:
5 5
#####
#....
***##
*#..#
*####
输出:
4