QOJ.ac

QOJ

Limite de temps : 1 s Limite de mémoire : 512 MB Points totaux : 100

#3366. 羊群狂热

Statistiques

自 IDI Open ’09 以来,我编写了许多旨在帮助我入睡的数羊程序。遗憾的是,这些程序效果都不好,所以我过去几年几乎每天晚上都在诅咒那些邪恶的动物。失眠给了我不少空闲时间,我便用这些时间创造了一款名为“Sheep Frenzy”的新游戏。

玩家控制“令人不快的”Ulgr,他的目标是尽快吃掉每一关中的所有羊。奇怪的是,尽管我已经玩得很好了,但这仍然不能让我从这些作恶者身上获得复仇的快感。这就是我需要你帮助的原因。你需要编写一个程序,计算出让 Ulgr 在棋盘上移动以尽快吃掉所有羊的最佳路径。

棋盘是一个 $H \times W$ 的网格,每个单元格代表以下内容之一:

  • 'U' - “令人不快的”Ulgr 的起始位置。他喜欢吃羊,而你将帮助他实现这一目标。
  • '#' - 羊。它们显然又瞎又聋,也没有嗅觉,所以即使你走过去吃它们,它们也不会移动。
  • '.' - 草地。别争了,这就是草地。
  • 'X' - 山脉。你(Ulgr)不能走在这些格子上。好吧,老实说你可以走,但请不要这样做。如果你走上去,游戏会卡死。

Ulgr 每秒钟移动一次。一次移动包括吃掉一只羊,或者向左、向右、向上、向下移动一个单元格。他只有在与羊处于同一个单元格时才能吃掉它。

输入格式

输入的第一行包含一个整数 $T$,表示接下来的测试用例数量。每个测试用例以一行包含两个数字 $H$ 和 $W$ 开始,分别表示该关卡网格的高度和宽度。接下来是 $H$ 行,每行包含 $W$ 个字符,描述该部分的网格。

输出格式

对于每个测试用例,输出一行,包含一个整数,表示 Ulgr 吃掉该关卡所有羊所需的最短时间(以秒为单位)。如果无法吃掉所有的羊,则输出 impossible

数据范围

  • $0 < T \leq 100$
  • $0 < H, W \leq 50$
  • 每个测试用例中羊的数量至少为 1 只,且不超过 16 只。
  • 每个测试用例包含且仅包含一个 'U'。
  • 棋盘上的所有山脉都标记为 'X'。也就是说,Ulgr 和任何羊都不会出现在山脉上。

样例

输入格式 1

2
2 2
U.
.#
3 5
#..X#
..XXX
.U...

输出格式 1

3
impossible

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.