AT_dfs_a 深さ優先探索
题目描述
[problemUrl]: https://atcoder.jp/contests/atc001/tasks/dfs_a
本题为讲座用题目。页面下方附有题解。
高桥君居住的城市呈长方形,被划分为网格状的区块。长方形的每条边都与东西或南北方向平行。每个区块要么是道路,要么是围墙。高桥君只能在道路上沿东西南北方向移动,不能斜向移动。同时,围墙区块无法通过。
请判断高桥君能否在不破坏围墙的情况下,仅通过道路到达鱼店。
输入格式
输入通过标准输入按以下格式给出。
> $ H $ $ W $
> $ c_{0,0} $ $ c_{0,1} $ ... $ c_{0,W-1} $
> $ c_{1,0} $ $ c_{1,1} $ ... $ c_{1,W-1} $
> :
> $ c_{H-1,0} $ $ c_{H-1,1} $ ... $ c_{H-1,W-1} $
- 第 $1$ 行包含两个整数 $H$(城市南北方向长度,$1 \leq H \leq 500$)和 $W$(东西方向长度,$1 \leq W \leq 500$),以空格分隔。
- 接下来的 $H$ 行,每行包含 $W$ 个字符 $c_{i,j}$($0 \leq i \leq H-1,\ 0 \leq j \leq W-1$),表示网格中每个区块的状态。
- 第 $i$ 行第 $j$ 个字符 $c_{i,j}$ 取值为 `s`、`g`、`.`、`#` 之一,表示坐标 $(j, i)$ 的区块状态:
- `s` :该区块为高桥君的家。
- `g` :该区块为鱼店。
- `.` :该区块为道路。
- `#` :该区块为围墙。
- 高桥君可以通过家、鱼店和道路,但不能通过围墙。
- 不能走出给定城市的范围。
- `s` 和 `g` 各出现一次。
输出格式
如果能够在不破坏任何围墙的情况下,从家到达鱼店,输出 `Yes`;否则输出 `No`。输出仅一行。
说明/提示
### 题解
**[深度优先搜索的染色法](https://www.slideshare.net/secret/lyag9AlTOMIY2J "深さ優先探索による塗りつぶし")** 来自 **[AtCoder Inc.](http://www.slideshare.net/chokudai)**
### 样例解释 1
高桥君无法到达鱼店。
由 ChatGPT 4.1 翻译