QOJ.ac

QOJ

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

#23804. Formaggio

統計

Problema

Anche quest'anno i caseifici della città di JOI hanno iniziato a produrre formaggio e un topo ha messo fuori la testa dalla sua tana. La città di JOI è suddivisa in isolati orientati da est a ovest e da nord a sud, e ciascun isolato è la tana, un caseificio, un ostacolo oppure uno spazio vuoto. Il topo parte dalla tana, visita tutti i caseifici e mangia $1$ pezzo di formaggio in ciascuno.

In questa città ci sono $N$ caseifici e ciascun caseificio produce $1$ solo tipo di formaggio. La durezza del formaggio varia a seconda del caseificio e c'è esattamente $1$ caseificio che produce formaggio per ciascuna durezza da $1$ a $N$.

L'energia iniziale del topo è $1$, e ogni volta che mangia $1$ pezzo di formaggio la sua energia aumenta di $1$. Tuttavia, il topo non può mangiare formaggio più duro della sua energia attuale.

Il topo può spostarsi in un isolato adiacente a est, ovest, sud o nord in $1$ minuto, ma non può entrare in un isolato con un ostacolo. Può anche passare per un caseificio senza mangiare il formaggio. Scrivi un programma per trovare il tempo minimo necessario per finire di mangiare tutto il formaggio. Il tempo impiegato dal topo per mangiare il formaggio è trascurabile.

Input

L'input è composto da $H+1$ righe. Nella $1$-a riga sono scritti $3$ interi $H$, $W$, $N$ ($1 \le H \le 1000$, $1 \le W \le 1000$, $1 \le N \le 9$) in quest'ordine, separati da spazi. Ciascuna riga dalla $2$-a riga alla riga $H+1$ contiene una stringa di $W$ caratteri composta da S, 1, 2, $\dots$, 9, X, ., ciascuno dei quali rappresenta lo stato di un isolato. Indicando con $(i, j)$ ($1 \le i \le H, 1 \le j \le W$) l'isolato che è l'$i$-esimo da nord e il $j$-esimo da ovest, il $j$-esimo carattere della riga $i+1$ è S se l'isolato $(i, j)$ è la tana, X se è un ostacolo, . se è uno spazio vuoto, e rispettivamente 1, 2, $\dots$, 9 se è un caseificio che produce formaggio di durezza $1, 2, \dots, 9$. Nell'input la tana e i caseifici che producono formaggio di durezza $1, 2, \dots, N$ sono presenti $1$ volta ciascuno. È garantito che tutte le altre caselle sono ostacoli o spazi vuoti. È garantito che il topo può mangiare tutto il formaggio.

Output

Stampa su $1$ riga un intero che rappresenta il tempo minimo (in minuti) necessario per finire di mangiare tutto il formaggio.

Esempi di input/output

Esempio di input 1

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

Esempio di output 1

4

Esempio di input 2

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

Esempio di output 2

12

Esempio di input 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.......

Esempio di output 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.