P10943 Going Home
题目描述
# 回家
在网格地图上有 $n$ 个人和 $n$ 个房子。在每个单位时间里,每个人都可以在相邻的点上水平或垂直移动一个单位步。对于每个人,你需要为他每走一步支付 $1$ 美元的旅行费,直到他进入一所房子。由于每栋房子只能容纳一个人,这项任务很复杂。
你的任务是计算你需要支付的最低金额,以便将这 $n$ 个人送到那 $n$ 个不同的房子里。输入是场景的地图,`.` 表示空白空间,`H`表示该点上的房子,`m`表示在该点上有一个人。
你可以把网格地图上的每个点想象成一个相当大的正方形,所以它可以同时容纳 $n$ 个人物;此外,如果一个人在没有进入房子的情况下踩在有房子的网格上,也没关系。
输入格式
输入中有一个或多个测试用例。每种情况都以一行给出两个整数 $N$ 和 $M$ 开始,其中 $N$ 是映射的行数,$M$ 是列数。其余的输入将是描述地图的 $N$ 行。你可以假设 $N$ 和 $M$ 都在 $2$ 到 $100$ 之间,包括 $2$ 和 $100$。将有相同数量的 $H$ 和 $m$ 在地图上;最多有 $100$ 栋房子。$N$ 和 $M$ 的输入将以`0 0`终止。
输出格式
对于每个测试用例,输出一行带有单个整数的代码,这是您需要支付的最小金额(美元)。
---
翻译提供者:[csyc5586](https://www.luogu.com/user/668156)