#aBC348D. [ABC348D] Medicines on Grid

[ABC348D] Medicines on Grid

AT_abc348_d [ABC348D] Medicines on Grid

题目描述

有一个 HHWW 列的网格。自上而下第 ii 行,自左而右第 jj 列的格子用 (i,j)(i, j) 表示。每个格子的状态由字符 Ai,jA_{i,j} 表示,含义如下:

  • . :空格。
  • # :障碍物。
  • S :空格且为起点。
  • T :空格且为终点。

高桥君可以从当前格子向上下左右相邻的空格移动,每移动一次消耗 11 点能量。但当能量为 00 时无法移动,也不能移动到网格外。

网格中共有 NN 个药品。第 ii 个药品位于空格 (Ri,Ci)(R_i, C_i),使用后能量会变为 EiE_i。注意,能量不一定会增加。高桥君可以在自己所在的格子使用药品,使用后药品消失。

高桥君一开始在起点,能量为 00,他想移动到终点。请判断是否可能。

输入格式

输入按以下格式从标准输入给出。

HH WW
A1,1A_{1,1} A1,2A_{1,2} \cdots A1,WA_{1,W}
A2,1A_{2,1} A2,2A_{2,2} \cdots A2,WA_{2,W}
\vdots
AH,1A_{H,1} AH,2A_{H,2} \cdots AH,WA_{H,W}
NN
R1R_1 C1C_1 E1E_1
R2R_2 C2C_2 E2E_2
\vdots
RNR_N CNC_N ENE_N

输出格式

如果高桥君可以从起点移动到终点,输出 Yes,否则输出 No

输入输出样例 #1

输入 #1

4 4
S...
#..#
#...
..#T
4
1 1 3
1 3 5
3 2 1
2 3 1

输出 #1

Yes

输入输出样例 #2

输入 #2

2 2
S.
T.
1
1 2 4

输出 #2

No

输入输出样例 #3

输入 #3

4 5
..#..
.S##.
.##T.
.....
3
3 1 5
1 2 3
2 2 1

输出 #3

Yes

说明/提示

限制条件

  • 1H,W2001 \leq H, W \leq 200
  • Ai,jA_{i,j} 只可能是 ., #, S, T 之一。
  • STAi,jA_{i,j} 中各恰好出现一次。
  • 1N3001 \leq N \leq 300
  • 1RiH1 \leq R_i \leq H
  • 1CiW1 \leq C_i \leq W
  • 如果 iji \neq j,则 (Ri,Ci)(Rj,Cj)(R_i, C_i) \neq (R_j, C_j)
  • ARi,CiA_{R_i, C_i} 不是 #
  • 1EiHW1 \leq E_i \leq HW

样例解释 1

例如,可以按如下方式到达终点:

  • 使用药品 11,能量变为 33
  • 移动到 (1,2)(1, 2),能量变为 22
  • 移动到 (1,3)(1, 3),能量变为 11
  • 使用药品 22,能量变为 55
  • 移动到 (2,3)(2, 3),能量变为 44
  • 移动到 (3,3)(3, 3),能量变为 33
  • 移动到 (3,4)(3, 4),能量变为 22
  • 移动到 (4,4)(4, 4),能量变为 11

在这个移动过程中,(2,3)(2, 3) 也有药品,但如果使用它则无法到达终点。

样例解释 2

高桥君无法从起点移动。

由 ChatGPT 4.1 翻译