#P1016. 六边形战棋(chess)

六边形战棋(chess)

题目描述

该战棋游戏在一个 N×NN \times N 的棋盘上进行,每个格子都是正六边形。游戏需要两个玩家进行,一个为红方(使用红色棋子),一个为蓝方(使用蓝色棋子)。玩家先后手顺序是随机的(也就是双方都有可能先手)。

游戏开始时棋盘为空,两个玩家轮流放一个属于自己颜色方的棋子到棋盘的空格当中。允许放在任意空格,不一定非要放在已有同颜色的相邻格子。

游戏的棋盘比较特殊,棋盘的上边界和下边界为红色,左边界和右边界为蓝色。对于任意玩家,游戏目标是在棋盘上放置己方棋子,联通两个己方颜色的边界。第一个达成该目标的玩家为胜利方,游戏在出现一方胜利后马上结束。

特别地,认为棋盘四个角落的格子是两种颜色都联通的。

现在,给你若干个表示棋局排布的数据,设计程序帮助判断这些棋局排布属于以下何种状态:

  • Impossible : 按游戏进行的规则,不可能出现该种棋局排布,即为 Impossible 状态。
  • Red : 红方赢得胜利。
  • Blue : 蓝方赢得胜利。
  • Playing : 尚未决出胜者。

注意:当出现规则外的棋局排布,即 Impossible 状态时,即使棋盘上某颜色棋子已经联通同色边界,但也只能算作 Impossible 状态,不能计为任一方胜利。

以下是一个在 6×66 \times 6 棋盘上的范例,此时蓝方胜出。(图中数字为落子顺序)

输入格式

第一行一个整数 T,表示数据组数。每组数据格式如下:

第一行一个整数 NN 表示棋盘大小

接下来的 NN 行,每行是一个长度 NN 的字符串,用于描述棋盘布局。

其中,R 表示该位置放置红方棋子;B 表示该位置放置蓝方棋子;. 表示该位置为空格,未放置任何棋子。

输出格式

共 T 行,每行输出给定的棋盘布局对应的棋局状态。

注:棋局状态即为 ImpossibleRedBluePlaying之一(注意区分大小写)

测试样例

3
2
BR
BB
4
BBBB
BBB.
RRR.
RRRR
6
......
..R...
BBBBBB
..R.R.
..RR..
......
Impossible
Blue
Blue

样例解释

样例一说明

第一组数据:按游戏规则不可能出现这样的情况,因此是 Impossible 状态

第二组数据:符合游戏规则,并且蓝方棋子联通左端和右端的蓝色边界,因此蓝方胜利。

第三组数据:对应题目描述中给出的范例,蓝方胜利。

数据范围

子任务 NN 特殊性质
1(20pts)\texttt{1(20pts)} =1 =1
2(20pts)\texttt{2(20pts)} 10 \le 10 数据保证有一方胜利
3(20pts)\texttt{3(20pts)}
4(20pts)\texttt{4(20pts)} 100 \le 100 数据保证有一方胜利
5(20pts)\texttt{5(20pts)}

对于 100%100\% 的数据,1T100,1N100 1 \le T \le 100, 1 \le N \le 100