题目二:包裹
恭喜你被聘为著名包裹投递公司的首席决策者(CDM)。
客户喜欢更快的物流,因此你决定在全球范围内降低包裹的运输时间,从而吸引更多客户。
你已经向当局介绍了这个想法,他们已经为你分配了足够的预算来建立一个新的运输处。
我们将世界划分为一个R×C的方格矩阵。
每个方格内或者存在一个运输处,或者没有。
你可以选择一个还未建立运输处的方格,在上面建立新的运输处。
如果某方格包含运输处,则包裹到该方格的运输时间为0。
否则,该方格的运输时间被定义为该方格与包含运输处的任何其他方格之间的最小曼哈顿距离。
总运输时间是所有方格的运输时间的最大值。
在你有权利建立一个新的运输处(最多一个)的情况下,总运输时间最短是多少?
注意:两个方格(r1,c1)和(r2,c2)之间的曼哈顿距离定义为| r1 - r2 | + | c1 - c2 |,其中| * |运算符表示绝对值。
输入格式
第一行包含整数T,表示共有T组测试数据。
每组测试数据第一行包含两个整数R和C,分别表示矩阵的行数和列数。
接下来R行,每行包含一个长度为C的只包含0或1的字符串,其中0表示没有运输处,1表示有运输处。
输出格式
每组数据输出一个结果,每个结果占一行。
结果表示为“Case #x: y”,其中x为组别编号(从1开始),y为最小总运输时间。
数据范围
1≤T≤100
1≤R,C≤250
数据保证至少存在一个运输处
样例
输入样例:
3
3 3
101
000
101
1 2
11
5 5
10001
00000
00000
00000
10001
输出样例:
Case #1: 1
Case #2: 0
Case #3: 2
样例解释
在样例#1中,通过在没有运输处的五个方格中的任何一个中建立新的运输处,你就可以获得最小总运输时间1。
在样例#2中,所有方格都已经有一个运输处,因此最小总运输时间为0。请注意,你可以选择不建立新的运输处。
在样例#3中,要获得最小的总运输时间2,你可以在以下任何方格中建立新的运输处:(2,3),(3,2),(3,3),(3,4),(4,3)。
代码实现
在这里插入代码片