#ATagc014c. [AGC014C] Closed Rooms

[AGC014C] Closed Rooms

题目描述

高桥君被困在一栋建筑物里。

这栋建筑物由 HHWW 列共 H×WH×W 个房间组成,自上而下第 ii 行,自左而右第 jj 列的房间用 (i,j)(i,j) 表示,该房间的状态由 Ai,jA_{i,j} 描述。若 Ai,j=A_{i,j}= #,则该房间为封闭房间;若 Ai,j=A_{i,j}= .,则该房间可以自由进出。Ai,j=A_{i,j}= S 的房间是高桥君当前所在的房间,且该房间同样可以自由进出。

此外,位于第 11 行、第 11 列、第 HH 行、第 WW 列之一的房间都与建筑物外部相连,除此以外的每个房间 (i,j)(i,j)44 个相邻房间 (i1,j)(i-1,j)(i+1,j)(i+1,j)(i,j1)(i,j-1)(i,j+1)(i,j+1) 相邻。

为了逃出这栋建筑物,高桥君打算使用魔法。每次使用魔法可以进行如下操作:

  • 高桥君可以从当前房间移动到相邻的房间,最多连续移动 KK 次,且不能进入封闭房间。
  • 之后,他可以选择至多 KK 个封闭房间,并将它们变为打开状态(今后这些房间可以自由进出)。

以上操作中,可以选择不移动或者不打开任何封闭房间。

高桥君的目标是到达与建筑物外部相连的任意房间。请你求出他至少需要施展多少次魔法才能达成目标。

保证初始时高桥君所在的房间与建筑物外部没有直接相连。

输入格式

输入从标准输入中给出,格式如下:

HH WW KK

A1,1A1,2A1,WA_{1,1}A_{1,2}\ldots A_{1,W}

\vdots

AH,1AH,2AH,WA_{H,1}A_{H,2}\ldots A_{H,W}

输出格式

输出高桥君所需施展魔法的最小次数。

样例 1

输入

3 3 3
#.#
#S.
###

输出

1

样例 2

输入

3 3 3
###
#S#
###

输出

2

样例 3

输入

7 7 2
#######
#######
##...##
###S###
##.#.##
###.###
#######

输出

2

说明/提示

限制条件

  • 3H8003\leq H\leq 800
  • 3W8003\leq W\leq 800
  • 1KH×W1\leq K\leq H×W
  • Ai,jA_{i,j} 仅可能为 #.S 中的一个。
  • 恰好存在唯一的 Ai,j=SA_{i,j}=S,且 2iH1, 2jW12\leq i\leq H-1,\ 2\leq j\leq W-1

样例解释 1

高桥君可以在第一次魔法中直接移动到房间 (1,2)(1,2),所以只需施展 11 次魔法。

样例解释 2

高桥君在第一次魔法无法移动,但可以在第一次魔法中打开房间 (1,2)(1,2),然后在下一次魔法中移动到 (1,2)(1,2),共需施展 22 次魔法即可达成目标。

由 ChatGPT 5 翻译