#P1488. 2024.9.11-秋招-第1题-最小距离和

2024.9.11-秋招-第1题-最小距离和

题目内容

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

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

区域内如果没有小区或者没有垃圾回收站,则最小距离和返回00

无法到达垃圾回收站的小区会单独处理,不计入本次距离和中。

计算所有小区垃圾送到垃圾回收站的最小距离和。

输入描述

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

接下来的mm行表示一个m×nm×n的区域矩阵数组,每行的元素间以空格分隔,其中元素取值仅为1-1(障碍区域)、

00(垃圾处理站)、11(小区)、22(空白区域)。

输出描述

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

样例1

输入

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

输出

11

说明

图1

如图所示,位置[0,0][0,3][3,0][3,2][3,3][0,0]、[0,3]、[3,0]、[3,2]、[3,3]是小区,位置[1,1][1,3][1,1]、[1,3]是垃圾站,位置[0,2][2,2][0,2]、[2,2]

障碍,无法通行,55个小区,22个垃圾站,小区到垃圾站的最小路径是2+3+1+3+2=112+3+1+3+2=11

对于位置[3,2][3,2]的小区,可以将垃圾运送到垃圾站[1,1][1,1][1,3][1,3],两者的距离是一样的。

题解图示仅以到[1,3][1,3]垃圾站进行说明。

样例2

输入

2 3
0 -1 1
1 -1 2

输出

1

说明

图2

如图所示,位置[0,2][1,0][0,2]、[1,0]小区,位置[0,0][0,0]是垃圾站,位置[0,1][1,1][0,1]、[1,1]是障碍,无法通行,22个小区,11个垃圾站,小区到垃圾站的最小路径是1+0=11+0=1