首页 / 题库

P14066 - Mzc和男家丁的游戏

算法入门
通过次数0 提交次数0 内存限制 128MB 时间限制1秒

描述

mzc 家十分有钱,他家里有若干个男家丁。有一天,他们把家丁们召集在一起,决定玩捉迷藏游戏。现在 mzc 要亲自去找他的男家丁,请你帮助他计算最短需要移动多少步才能找到任意一个男家丁。

游戏在一个 $ n $ 行 $ m $ 列的网格上进行,每个格子可能是:

- `m`:表示 mzc 的初始位置
- `d`:表示一个男家丁的位置(可能有多个)
- `#`:表示障碍物,不能通行
- `.`:表示空地,可以通行

mzc 每次可以向上、下、左、右四个方向移动一格,但不能走出网格或进入障碍物格子。他需要到达任意一个 `d` 格子即可抓住男家丁。

请你输出 mzc 到达最近的一个男家丁所需的最少移动步数。如果所有男家丁都无法到达,则输出 `No Way!`。

输入

第一行包含两个整数 $ n $ 和 $ m ( 3 \le n, m \le 2000 )$,分别表示网格的行数和列数。

接下来 $ n $ 行,每行包含一个长度为 $ m $ 的字符串,由字符 `m`、`d`、`#`、`.` 组成。保证网格中恰好有一个 `m` 和至少一个 `d`。

输出

如果 mzc 可以到达某个男家丁,则输出一个整数,表示最短移动步数。

否则输出 `No Way!`。

样例

  • 复制
  • 复制

提示

### 样例说明

mzc 位于 `(5,1)`(假设行列从1开始),一个男家丁位于 `(3,1)`,但由于障碍物阻挡,需要绕行,最短路径长度为 12。

## 数据范围与约定

- $ 3 \le n, m \le 2000 $
- 网格中仅包含 `m`、`d`、`#`、`.`。
- 恰好有一个 `m`,至少有一个 `d`。

意见反馈

    最多上传3张图片,格式为JPG、PNG、JPEG,单张不超过5MB

    注册

    发送验证码

    密码必须包含数字、字母和特殊字符

    找回密码

    发送验证码

    密码必须包含数字、字母和特殊字符

    运行 ID:67149

    • 测试点1:Accepted
    • 用时:0 ms
    • 内存:288 kb
    • 测试点2:Accepted
    • 用时:0 ms
    • 内存:288 kb
    输入
    203
    输出
    203

    test

    测评信息

    错误.in文件下载

    错误.out文件下载

    运行 ID:67149

    2019-01-24 15:06:36