logo AlgoBeat OnlineJudge
登录 注册

#214437. [JOI2022 预选赛 R2] 地毯 / Carpet

内存限制:1024 MiB 时间限制:2000 ms 标准输入输出
题目类型:VJudge(洛谷) 评测方式:VJudge
上传者: 匿名

题目描述

热爱时尚的比太郎新购置了一块地毯。该地毯呈矩形,被划分为 列的网格状区域,每个格子被涂成白色或黑色。从上往下第 行、从左往右第 列()的格子颜色由字符串 的第 个字符决定:若为 .,则为白色;若为 #,则为黑色。

比太郎将一枚棋子放置在地毯最左上角的格子上,并设想了一个游戏:通过若干次操作,将棋子移动至地毯最右下角的格子。

  • 每次操作,棋子必须移动到与当前所在格子颜色不同的、上下左右相邻的某一格。

比太郎希望尽量减少到达目标所需的步数。但根据地毯的图案,可能根本无法到达目标。

当给出地毯的图案信息时,请编写程序判断:通过重复操作,是否能从左上角格子将棋子移动至右下角格子;若可能,则求出最小操作次数。

输入格式

输入通过标准输入以如下格式给出:

输出格式

若通过重复操作可以从左上角格子到达右下角格子,则输出最小操作次数;若无法到达,则输出 。结果请在标准输出中以单行输出。

样例

样例输入 1

4 5
...#.
#####
...#.
#.###

样例输出 1

9

样例输入 2

3 3
...
...
...

样例输出 2

-1

样例输入 3

5 5
###.#
.#...
.#..#
.####
##..#

样例输出 3

12

样例输入 4

7 5
.#.##
##...
.#.##
.###.
##.#.
...#.
##.#.

样例输出 4

12

数据范围与提示

样例 1 解释

这是符合题目要求的两种走法:

:::align{center} :::

左侧的走法只需使用 次操作就能完成了,右侧的走法需要 次操作才能完成。可以证明,不存在小于 次操作的方式。

数据范围

  • 是长度为 的字符串()。
  • 的每个字符为 . 或 #()。
  • 为整数。

子任务

  1. (4 分)
  2. (14 分)
  3. (24 分)
  4. (58 分)无额外约束。

翻译由 Qwen3-235B 完成