29. 安排超市(第一期模拟笔试)
内存限制:128 MB
时间限制:1.000 S
题目描述
给定一个 n*n 的地图。地图是上下左右四联通的,但是不能斜向行走。
其中:
*代表障碍,不可通行;
.代表路,可以通行;
#代表房子。房子也是可以通行的。
现在需要在一些地方安排一些超市(不能安排在障碍物上,可以安排在路上或者房子上,超市也是可以通行的),每个房子至少可以到达一个超市。同时由于成本原因,超市的数量需要尽可能的少。
在超市数量最少的情况下,每个房子到达最近的超市的距离之和需要尽可能小。
你的任务是计算超市最少的数量,以及最小的距离之和。
输入
第一行包含一个正整数 n,代表地图的大小(1 <= n <= 50)。
接下来的 n 行,每行包含一个长度为 n 的字符串,表示整个地图。
输出
输出两个整数,用空格隔开。分别代表超市的最小数量、最小的距离之和。
样例输入 复制
3
#.#
.**
*.#
样例输出 复制
2 2
提示
下标从 0 开始,第一个超市安排的位置是(0,1),第二个超市安排的位置是(2,2)。 三个房子到超市的距离分别为1、1、0。这样可以使得三个房子都能到达超市,并且所需超市数量最少,总距离之和也最少。
注意:超市直接建在房子上距离为 0。如果没有房子,则不需要建超市。