题目名称 3268. Going Home
输入输出 GoingHome.in/out
难度等级 ★★☆
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 1
题目来源 Gravatar瑆の時間~無盡輪迴·林蔭 于2019-10-24加入
开放分组 全部用户
提交状态
分类标签
二分图 网络流
分享题解
通过:2, 提交:2, 通过率:100%
Gravatar瑆の時間~無盡輪迴·林蔭 100 0.000 s 0.00 MiB C++
Gravatar小金 100 0.000 s 0.00 MiB C++
关于 Going Home 的近10条评论(全部评论)

3268. Going Home

★★☆   输入文件:GoingHome.in   输出文件:GoingHome.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】


在网格地图上有 n 个小人和 n 个房子,在单位时间内,每个小人都可以水平或垂直移动一个格子。

每个小人移动一步都会花费你1美金,知道他进入到一间房子里为止,每间房子只能容纳一人。

你需要计算,所有小人都进入到房子里,你所需要花费的金额最少是多少。

在输入的地图场景中,“.”表示空地,“H”表示房子,“m”表示小人。

地图足够大,并且小人在不进入房间的情况下,也可以踩在有房间的格子上。


【输入格式】


输入包含多组测试数据。

每组测试数据第一行包含两个整数N和M,表示地图大小为N行M列。

接下来N行每行包含M个字符,表示完整的地图场景。

当输入一行为0 0时,表示输入终止。


【输出格式】


每组数据输出一个整数,表示最少花费。

每个结果占一行。


【样例输入】

2 2 .m H. 5 5 HH..m ..... ..... ..... mm..H 7 8 ...H.... ...H... ....H.... mmmHmmmm ...H.... ...H.... ...H.... 0 0

【样例输出】

2
10
28

【提示】

2<=N,M<=100。

【来源】

《算法竞赛进阶指南》