传统题 文件IO:wall 1000ms 512MiB

破墙

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

本题使用文件输入输出:输入文件名为 wall.in,输出文件名为 wall.out。

一座 nn 行 mm 列的迷宫,每个格子是空地 .、墙 #、起点 S 或终点 T 之一(起点和终点各恰好一个,它们本身是空地)。

小 Z 从起点出发,每一步可以走到上、下、左、右相邻的一个格子,不能走出迷宫。小 Z 带着一把锤子,最多能砸开 kk 面墙:走进一个墙格子时,这面墙就被砸开,消耗一次机会;砸开后这个格子就变成空地。

请你求出从起点走到终点最少需要多少步。如果砸开至多 kk 面墙也无法到达终点,输出 −1-1。

输入格式

输入文件名为 wall.in。

第一行三个整数 n,m,kn, m, k。

接下来 nn 行,每行一个长度为 mm 的字符串,描述迷宫。

输出格式

输出文件名为 wall.out。

一行一个整数,表示最少步数;无法到达输出 −1-1。

样例 #1

样例输入 #1

3 4 1
S#..
##.#
...T

样例输出 #1

5

样例解释

起点 (1,1)(1,1) 的右边和下边都是墙,必须砸一面。例如砸开 (2,1)(2,1):$(1,1) \to (2,1) \to (3,1) \to (3,2) \to (3,3) \to (3,4)$,共 55 步。砸开 (1,2)(1,2) 走上面一条路也是 55 步。

样例 #2

样例输入 #2

3 4 0
S#..
##.#
...T

样例输出 #2

-1

样例 #3

样例输入 #3

3 5 1
S.#.T
..#..
.....

样例输出 #3

4

样例解释

不砸墙要绕到第 33 行,需要 66 步;砸开 (1,3)(1,3) 直接横穿只要 44 步。

提示

数据范围

  • 对于 30%30\% 的数据:k=0k = 0;
  • 对于 60%60\% 的数据:n,m≤50n, m \le 50,k≤5k \le 5;
  • 对于 100%100\% 的数据:1≤n,m≤5001 \le n, m \le 500,0≤k≤100 \le k \le 10。

CSP模拟赛-Level B

未参加
状态
已结束
规则
OI
题目
6
开始于
2026-10-7 21:15
结束于
2026-10-16 5:15
持续时间
200 小时
主持人
参赛人数
7