6200: 【BFS】华为2024秋招-最小距离和

金币值:1 时间限制:8.000 s 内存限制:128 M
正确:38 提交:123 正确率:30.89% 命题人:
点赞量:0 收藏量:2 题目类型:程序 知识点: BFS 华为

题目描述


在一个大城市中,环卫工人小C和他的团队负责清理城市的生活垃圾。

每个小区的生活垃圾由一队环卫工人负责运送到最近的垃圾回收站进行处理,求将所有小区垃圾送到垃圾回收站的最小距离和。

假设小区和垃圾回收站都在都在一个m行 * n列的区域矩阵上,相邻点的距离为 1 ,只能上下左右移动;其中0表示垃圾处理站,1表示小区,2表示空白区域,-1表示障碍区域不可通行。

区域内如果没有小区或者没有垃圾回收站,则最小距离和返回0。无法到达垃圾回收站的小区会单独处理,不计入本次距离和中。计算所有小区垃圾送到垃圾回收站的最小距离和。


输入格式


第一行为两个数字 mn,表示区域矩阵的行数和列数,中间使用空格分隔,mn的范围均为[1,300) 。 

接下来的 m 行表示一个 m*n 的区域矩阵数组,每行的元素间以空格分隔,其中元素取值仅为-1(障碍区域)、0(垃圾处理站)、1(小区)、2(空白区域)


输出格式

一个整数,表示所计算的最小距离和。

输入样例    复制

4 4 
1 2 -1 1 
2 0 2 0 
2 2 -1 2 
1 2 1 1

输出样例    复制

11