SP2177 GALOU - Galou is back!

题目描述

著名的女巫再次出现。在消灭了众多怪物以寻找隐藏宝藏后,Zak Galou 决定在勃艮第购置葡萄园安度晚年。他的新生活本来很安逸,直到有一天他的农用拖拉机出了故障。 他的拖拉机发动机依赖于一个齿轮机制运转。发动机可以用一个二维网格来表示。每个网格位置可以最多安装一个齿轮,所有齿轮都是相同的,并可以与相邻齿轮啮合。在这个网格中,一个齿轮最多可以与六个相邻齿轮啮合,如下图所示: ![齿轮示例图](https://cdn.luogu.com.cn/upload/vjudge_pic/SP2177/eef80a82b116f01731fc55e26a33d7f5d1534496.png) 正常情况下,当拖拉机启动时,一些齿轮会被初始激活并试图顺时针旋转。当一个齿轮试图朝一个方向旋转时,所有与它相邻的齿轮会试图向相反方向旋转。 当 Zak Galou 打开发动机时,他发现发动机遭到了破坏(可能是某个妒忌的寻宝者下的手)。一些齿轮被拆除,另一些则被添加进去,导致部分齿轮无法运转。一个齿轮无法运转有两种可能:要么是自由的,要么是阻塞的。如果某个齿轮既没有初始激活,也没有相邻齿轮试图旋转,它就是自由的;如果一个齿轮同时试图朝两个方向旋转,它就是阻塞的。比如,考虑下图中发动机的三个齿轮,如果启动时有任何一个齿轮被初始激活,所有齿轮都将被阻塞;如果没有齿轮被激活,那么它们都是自由的。 ![齿轮示例图](https://cdn.luogu.com.cn/upload/vjudge_pic/SP2177/a79f7b5951977cefb0f5fe9282bddab7c94fad5b.png) 为了解决拖拉机的问题,Zak Galou 请求你的帮助。给出发动机的描述和那些初始激活的齿轮,他想知道每个齿轮在拖拉机启动时的状态:是顺时针旋转、逆时针旋转、自由还是阻塞?

输入格式

输入包含多组测试数据。每组测试数据的第一行包括两个整数 $R$ 和 $C$,用空格隔开,分别表示发动机网格的行数和列数($1 \le R, C \le 100$)。接下来的 $R$ 行描述了发动机。第 $i$ 行代表发动机的第 $i$ 行,并包含 $C$ 个字符。字符“.” 表示该位置没有齿轮,字符“*”表示该位置有一个但并未初始激活的齿轮,字符“I”表示有一个初始激活的齿轮。为简化输入,网格用左对齐的矩形表示。输入的结尾由 R = C = 0 指定。

输出格式

对于每组测试数据,程序需输出 $R + 1$ 行。第一行为空;接下来的 $R$ 行中每行包含 $C$ 个字符。打印的字符表示发动机启动时网格中各位置的状态。若该位置没有齿轮,打印“.”;若齿轮顺时针旋转,打印“(”;若逆时针旋转,打印“)”;若齿轮是自由状态,打印“F”;若齿轮被阻塞,打印“B”。 **本翻译由 AI 自动生成**