QOJ.ac

QOJ

実行時間制限: 10 s メモリ制限: 256 MB 満点: 100

#23804. 奶酪

統計

题目描述

今年 JOI 镇的奶酪工厂又开始生产奶酪了,一只老鼠从巢穴里探出头来。JOI 镇按东西南北方向划分为若干区块,每个区块是巢穴、奶酪工厂、障碍物或空地之一。老鼠从巢穴出发,造访所有的奶酪工厂,并在每家工厂各吃 $1$ 个奶酪。

这座镇上有 $N$ 家奶酪工厂,每家工厂只生产 $1$ 种奶酪。不同工厂生产的奶酪硬度不同,生产硬度从 $1$ 到 $N$ 的奶酪的工厂恰好各有 $1$ 家。

老鼠最初的体力为 $1$,每吃 $1$ 个奶酪,体力就会增加 $1$。但是,老鼠不能吃硬度大于自己当前体力的奶酪。

老鼠可以在 $1$ 分钟内移动到东西南北相邻的区块,但不能进入有障碍物的区块。老鼠也可以经过奶酪工厂而不吃奶酪。请编写程序求出吃完所有奶酪所需的最短时间。老鼠吃奶酪所花费的时间可以忽略不计。

输入格式

输入共 $H+1$ 行。第 $1$ 行按顺序包含 $3$ 个以空格分隔的整数 $H$、$W$、$N$($1 \le H \le 1000$,$1 \le W \le 1000$,$1 \le N \le 9$)。从第 $2$ 行到第 $H+1$ 行,每行包含一个由 S、1、2、$\dots$、9、X、. 组成的长度为 $W$ 的字符串,分别表示各个区块的状态。若将从北数第 $i$ 个、从西数第 $j$ 个区块记作 $(i, j)$($1 \le i \le H, 1 \le j \le W$),则第 $i+1$ 行的第 $j$ 个字符在区块 $(i, j)$ 为巢穴时为 S,为障碍物时为 X,为空地时为 .,为生产硬度 $1, 2, \dots, 9$ 的奶酪的工厂时分别为 1、2、$\dots$、9。输入中巢穴以及生产硬度 $1, 2, \dots, N$ 的奶酪的工厂各有 $1$ 个。保证其余格子均为障碍物或空地。保证老鼠一定能吃完所有奶酪。

输出格式

输出 $1$ 行一个整数,表示吃完所有奶酪所需的最短时间(分钟)。

样例

样例输入 1

3 3 1
S..
...
..1

样例输出 1

4

样例输入 2

4 5 2
.X..1
....X
.XX.S
.2.X.

样例输出 2

12

样例输入 3

10 10 9
.X...X.S.X
6..5X..X1X
...XXXX..X
X..9X...X.
8.X2X..X3X
...XX.X4..
XX....7X..
X..X..XX..
X...X.XX..
..X.......

样例输出 3

91

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.