CF1680B Robots

题目描述

有一个被划分为 $n$ 行 $m$ 列的场地。某些格子是空的(用 E 表示),其他格子里有机器人(用 R 表示)。 你可以同时向所有机器人发送一条指令。指令有以下四种类型之一: - 向上移动; - 向右移动; - 向下移动; - 向左移动。 当你发送一条指令时,所有机器人会同时尝试朝你选择的方向移动一步。如果某个机器人试图移出场地边界,它会爆炸;否则,每个机器人会移动到相邻的格子。 你可以按任意顺序发送任意多条指令(也可以一条都不发)。你的目标是让至少一个机器人到达场地的左上角。你能否做到这一点,并且不让任何机器人爆炸?

输入格式

第一行包含一个整数 $t$($1 \le t \le 5000$),表示测试用例的数量。 每个测试用例的第一行包含两个整数 $n$ 和 $m$($1 \le n, m \le 5$),分别表示行数和列数。接下来有 $n$ 行,每行包含一个长度为 $m$ 的字符串。每个字符要么是 E(空格),要么是 R(机器人)。 输入的额外限制:每个测试用例中,场地上至少有一个机器人。

输出格式

如果可以让至少一个机器人到达左上角,并且没有任何机器人爆炸,输出 YES。否则输出 NO。

说明/提示

样例的解释: 1. 在第一个测试用例中,只需发送一条“向左移动”指令即可。 2. 在第二个测试用例中,无论发送什么指令,至少有一个机器人会爆炸。 3. 在第三个测试用例中,只需发送一条“向左移动”指令即可。 4. 在第四个测试用例中,左上角已经有一个机器人。 5. 在第五个测试用例中,依次发送“向上移动”、“向左移动”、“向上移动”三条指令,可以让一个机器人到达左上角。 6. 在第六个测试用例中,无论如何移动机器人到左上角,至少会有另一个机器人爆炸。 由 ChatGPT 4.1 翻译