CF1365D.Solve The Maze
普及+/提高
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Vivek has encountered a problem. He has a maze that can be represented as an n×m grid. Each of the grid cells may represent the following:
- Empty — '.'
- Wall — '#'
- Good person — 'G'
- Bad person — 'B'
The only escape from the maze is at cell (n,m).
A person can move to a cell only if it shares a side with their current cell and does not contain a wall. Vivek wants to block some of the empty cells by replacing them with walls in such a way, that all the good people are able to escape, while none of the bad people are able to. A cell that initially contains 'G' or 'B' cannot be blocked and can be travelled through.
Help him determine if there exists a way to replace some (zero or more) empty cells with walls to satisfy the above conditions.
It is guaranteed that the cell (n,m) is empty. Vivek can also block this cell.
维韦克遇到了一个问题。他有一个迷宫,可以表示为一个 n×m 的网格。网格中的每个单元格可能表示以下几种类型之一:
- 空单元格 — '.'
- 墙 — '#'
- 好人 — 'G'
- 坏人 — 'B'
迷宫中唯一的出口位于单元格 (n,m)。
一个人只能移动到与其当前单元格共享一条边(即上下左右相邻)且不为墙的单元格。维韦克希望将一些空单元格(即 '.')替换为墙(即 '#'),使得所有好人都能成功逃出迷宫,而所有坏人都无法逃出。初始时包含 'G' 或 'B' 的单元格不能被封锁,且可以被通行(即好人和坏人均可经过彼此所在位置,也可经过对方所在位置)。
请帮助他判断:是否存在一种方式(可替换零个或多个空单元格为墙),满足上述条件。
题目保证单元格 (n,m) 初始为空(即 '.')。维韦克也可以将该出口单元格封锁(即改为 '#')。
输入格式
The first line contains one integer t (1≤t≤100) — the number of test cases. The description of the test cases follows.
The first line of each test case contains two integers n, m (1≤n,m≤50) — the number of rows and columns in the maze.
Each of the next n lines contain m characters. They describe the layout of the maze. If a character on a line equals '.', the corresponding cell is empty. If it equals '#', the cell has a wall. 'G' corresponds to a good person and 'B' corresponds to a bad person.
第一行包含一个整数 t(1≤t≤100)——测试用例的数量。随后是各测试用例的描述。
每个测试用例的第一行包含两个整数 n、m(1≤n,m≤50)——分别表示迷宫的行数和列数。
接下来的 n 行,每行包含 m 个字符,用于描述迷宫的布局:若某行为 '.',则对应格子为空;若为 '#',则对应格子为墙;'G' 表示一个好人,'B' 表示一个坏人。
输出格式
For each test case, print "Yes" if there exists a way to replace some empty cells with walls to satisfy the given conditions. Otherwise print "No"
You may print every letter in any case (upper or lower).
对于每个测试用例,如果存在一种方式将某些空单元格替换为墙壁以满足给定条件,则输出“Yes”;否则输出“No”。
你可以以任意大小写(大写或小写)输出每个字母。
输入输出样例
输入#1
6 1 1 . 1 2 G. 2 2 #B G. 2 3 G.# B#. 3 3 #B. #.. GG. 2 2 #B B.
输出#1
Yes Yes No No Yes Yes
说明/提示
For the first and second test cases, all conditions are already satisfied.
For the third test case, there is only one empty cell (2,2), and if it is replaced with a wall then the good person at (1,2) will not be able to escape.
For the fourth test case, the good person at (1,1) cannot escape.
For the fifth test case, Vivek can block the cells (2,3) and (2,2).
For the last test case, Vivek can block the destination cell (2,2).
对于第一和第二个测试用例,所有条件均已满足。
对于第三个测试用例,仅有一个空单元格 (2,2);若将其替换为墙,则位于 (1,2) 的好人将无法逃脱。
对于第四个测试用例,位于 (1,1) 的好人无法逃脱。
对于第五个测试用例,Vivek 可以封锁单元格 (2,3) 和 (2,2)。
对于最后一个测试用例,Vivek 可以封锁目标单元格 (2,2)。
输入解题思路,AI测评打分。不知道怎么写?