[ABC348D] Medicines on Grid
题意翻译
### 问题描述
有一个$H$ 行和 $W$ 列的网格。 $(i, j)$ 表示位于从上往下第 $i$ 行和从左往右第 $j$ 列的单元格。每个单元格有字符 $A_{i,j}$ :
- `.`:空单元格。
- `#`:一个障碍物。
- `S`:空单元格和起点。
- `T`:空单元格和目标点。
高桥可以通过消耗 $1$ 能量从当前单元格移动到上下左右的空单元格。如果能量为 $0$ ,他就无法移动,也无法离开网格。
网格中有 $N$ 种药。 第$i$种药位于空格 $(R_i, C_i)$ 处,可以用来把能量 ***变成*** $E_i$ 。注意,能量并不一定会增加。他可以在当前格子中使用药物。使用过的药物会消失。
高桥以 $0$ 的能量从起点开始,并希望达到目标点。请判断这是否可行。
### 数据与约定
- $1 \leq H, W \leq 200$
- $A_{i, j}$ 是 `.`、 `#`、 `S` 和 `T` 中的一个。
- `S` 和 `T` 都恰好存在一次。
- $1 \leq N \leq 300$
- $1 \leq R_i \leq H$
- $1 \leq C_i \leq W$
- 对于所有 $i \neq j$ $:$ $(R_i, C_i) \neq (R_j, C_j) .$
- $A_{R_i, C_i}$ 不是 `#`.
- $1 \leq E_i \leq HW$
题目描述
[problemUrl]: https://atcoder.jp/contests/abc348/tasks/abc348_d
$ H $ 行 $ W $ 列のグリッドがあります。上から $ i $ 行目、左から $ j $ 列目のマス目を $ (i,\ j) $ と表します。各マスの状態は文字 $ A_{i,j} $ で表され、意味は以下の通りです。
- `.` : 空きマス。
- `#` : 障害物。
- `S` : 空きマスかつスタート地点。
- `T` : 空きマスかつゴール地点。
高橋君は、今いるマスから上下左右に隣り合う空きマスへ、エネルギーを $ 1 $ 消費して移動することができます。ただし、エネルギーが $ 0 $ の状態で移動することはできず、またグリッドの外へ移動することはできません。
グリッドには合計で $ N $ 個の薬があります。$ i $ 番目の薬は空きマス $ (R_i,\ C_i) $ にあり、使うとエネルギーを **$ E_i $ にする**ことができます。必ずしもエネルギーが増えるとは限らないことに注意してください。高橋君は自分のいるマスにある薬を使うことができます。使った薬はなくなります。
高橋君ははじめエネルギー $ 0 $ の状態でスタート地点にいて、ゴール地点まで移動したいです。これが可能かどうか判定してください。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ H $ $ W $ $ A_{1,\ 1} $$ A_{1,\ 2} $$ \cdots $$ A_{1,\ W} $ $ A_{2,\ 1} $$ A_{2,\ 2} $$ \cdots $$ A_{2,\ W} $ $ \vdots $ $ A_{H,\ 1} $$ A_{H,\ 2} $$ \cdots $$ A_{H,\ W} $ $ N $ $ R_1 $ $ C_1 $ $ E_1 $ $ R_2 $ $ C_2 $ $ E_2 $ $ \vdots $ $ R_N $ $ C_N $ $ E_N $
输出格式
高橋君がスタート地点からゴール地点へ移動することが可能なら `Yes` 、不可能なら `No` を出力せよ。
输入输出样例
输入样例 #1
4 4
S...
#..#
#...
..#T
4
1 1 3
1 3 5
3 2 1
2 3 1
输出样例 #1
Yes
输入样例 #2
2 2
S.
T.
1
1 2 4
输出样例 #2
No
输入样例 #3
4 5
..#..
.S##.
.##T.
.....
3
3 1 5
1 2 3
2 2 1
输出样例 #3
Yes
说明
### 制約
- $ 1\ \leq\ H,\ W\ \leq\ 200 $
- $ A_{i,\ j} $ は `.`, `#`, `S`, `T` のいずれかである。
- `S` と `T` は $ A_{i,\ j} $ にそれぞれちょうど $ 1 $ つ存在する。
- $ 1\ \leq\ N\ \leq\ 300 $
- $ 1\ \leq\ R_i\ \leq\ H $
- $ 1\ \leq\ C_i\ \leq\ W $
- $ i\ \neq\ j $ ならば $ (R_i,\ C_i)\ \neq\ (R_j,\ C_j) $
- $ A_{R_i,\ C_i} $ は `#` でない。
- $ 1\ \leq\ E_i\ \leq\ HW $
### Sample Explanation 1
例えば、以下のようにしてゴール地点へ移動することができます。 - 薬 $ 1 $ を使う。エネルギーが $ 3 $ になる。 - $ (1,\ 2) $ へ移動する。エネルギーが $ 2 $ になる。 - $ (1,\ 3) $ へ移動する。エネルギーが $ 1 $ になる。 - 薬 $ 2 $ を使う。エネルギーが $ 5 $ になる。 - $ (2,\ 3) $ へ移動する。エネルギーが $ 4 $ になる。 - $ (3,\ 3) $ へ移動する。エネルギーが $ 3 $ になる。 - $ (3,\ 4) $ へ移動する。エネルギーが $ 2 $ になる。 - $ (4,\ 4) $ へ移動する。エネルギーが $ 1 $ になる。 この移動の途中には $ (2,\ 3) $ にも薬がありますが、これを使うとゴールできません。
### Sample Explanation 2
高橋君はスタート地点から移動することができません。