CF589J Cleaner Robot
题目描述
### 题目翻译
马莎最近买了一个清洁机器人,它可以在没有任何人帮助的情况下清洁地板。
从示意图上看,马莎的房间是一个矩形,由 $ w \times h $ 个大小为 $ 1 \times 1 $ 的正方形单元格组成。房间的每个单元格要么是空的(用字符 '.' 表示),要么被家具占据(用字符 '*' 表示)。
清洁机器人完全占据一个空闲的单元格。此外,机器人还有一个当前的方向(四种选择之一),我们可以说它朝这个方向看。
机器人在房间内移动和清洁地板的算法如下:
1. 清洁清洁机器人所在的当前单元格;
2. 如果机器人所看方向的相邻单元格存在且为空,则移动到该单元格并转到步骤1;
3. 否则,顺时针转动90度(相对于其当前方向向右),然后转到步骤2。
清洁机器人将遵循此算法,直到马莎将其关闭。
你知道马莎房间里的家具位置、清洁机器人的初始位置和方向。你能计算出如果机器人无限期工作,它将清洁的房间总面积吗?
输入格式
输入的第一行包含两个整数 $ w $ 和 $ h $ $ (1 \leq w, h \leq 10) $,表示马莎房间的大小。
接下来的 $ w $ 行,每行包含 $ h $ 个字符,用于描述房间。如果房间的某个单元格是空的,则对应的字符为 '.'。如果房间的某个单元格被家具占据,则对应的字符为 '*'。如果某个单元格有机器人,则该单元格是空的,并且输入中对应的字符为 'U'、'R'、'D' 或 'L',其中字母表示清洁机器人的方向。字母 'U' 表示机器人根据房间示意图向上看,字母 'R' 表示它向右看,字母 'D' 表示它向下看,字母 'L' 表示它向左看。
保证在给定的 $ w $ 行中,字母 'U'、'R'、'D' 或 'L' 恰好出现一次。机器人最初所在的单元格是空的(没有任何家具)。
输出格式
在输出的第一行中,打印一个整数,表示如果机器人无限期工作,它将清洁的房间总面积。
说明/提示
In the first sample the robot first tries to move upwards, it can't do it, so it turns right. Then it makes two steps to the right, meets a wall and turns downwards. It moves down, unfortunately tries moving left and locks itself moving from cell $ (1,3) $ to cell $ (2,3) $ and back. The cells visited by the robot are marked gray on the picture.
