#O7. [Sleeping Cup #2] Sleeping Bear's Honey 2

[Sleeping Cup #2] Sleeping Bear's Honey 2

注意

本题需要使用文件读写(honey2.in / honey2.out)。

题目背景

Sleeping Bear 是一只十分可爱的小熊,它越吃蜂蜜就越可爱,可是它每次去摘蜂蜜都会被蜜蜂蛰一头包。今天它又要吃蜂蜜了,但是它不想又被蜜蜂蛰一头包,所以它想请你帮助它设计一条逃生路线以躲避蜜蜂的围追堵截。

题目描述

给定一个正整数 kk,表示有一个 k×kk \times k 的地图,其中有字符 BXRL 分别表示 Sleeping Bear 所在的位置(默认蜜蜂就在它身后),不能走的路,可以走的路以及湖的位置(只有 Sleeping Bear 跳入湖中才能不被蜜蜂蛰)。

已知:

  • B 的位置按照 R 的位置处理。
  • Sleeping Bear 可能在任何一个 R 的位置。
  • Sleeping Bear 在开始逃生时可以面向任何方向(上、下、左、右)。
  • Sleeping Bear 每次可以执行以下操作之一:
    • 沿着所面向的方向,向前走一格。
    • 左转(逆时针转向)9090^\circ,然后向前走一格。
    • 也就是说,Sleeping Bear 每次只能直行或左转,不能掉头或右转。
  • 如果 Sleeping Bear 能够从某个 R 的位置走到任意一个 L 的位置,则这个 R 的位置是安全的。

请帮 Sleeping Bear 判断一下,哪些位置是安全的。

输入格式

本题有多组测试数据。

第一行输入一个整数 TT,表示测试数据的数量。

对于每组测试数据:

第一行输入一个整数 kk,表示有一个 k×kk \times k 的地图。

接下来 kk 行,每行输入 kk 个字符,表示这个地方的状态。

输出格式

对于每组测试数据,输出 kk 行,每行 kk 个字符:

  • 如果某个 R 的位置是安全的,则将它替换成 L 输出。
  • 如果某个 R 的位置不是安全的,则将它替换成 X 输出。
  • B 的位置按照 R 的位置处理。
  • 所有的 LX 原样输出。

样例

1
5
XXRRR
XRRRR
XXXXL
XXBRR
XXRRR
XXXXL
XXXXL
XXXXL
XXLLL
XXLLL
2
5
XXRRR
XRRRX
XXXXL
XXBRX
XXRRR
4
RRRR
XLXX
BXLR
RRLX
XXXXX
XXXXX
XXXXL
XXXXX
XXXXX
XLLL
XLXX
LXLL
LLLX

提示

样例 11 解释:

举个例子,B 位置是安全的,因为该位置存在逃生路线。

当 Sleeping Bear 的初始方向向右时,字符 G 标出了它唯一的逃生路线:

XXRRR
XRRRR
XXXXL
XXBGG
XXRRR

当 Sleeping Bear 的初始方向向左时,字符 G 标出了它一种可能的逃生路线:

XXRRR
XRRRR
XXXXL
XXBRG
XXGGG

实际上,它也可以在右下角的四个格子内绕任意多圈。

当 Sleeping Bear 的初始方向向下时,上面两种逃生路线都是可能的。

当 Sleeping Bear 的初始方向向上时,它将无法逃生。


  • 对于 50%50\% 的数据,1T101 \le T \le 102k102 \le k \le 10
  • 对于 100%100\% 的数据,1T101 \le T \le 102k10002 \le k \le 1000
  • 保证地图上只有 BXRL 四种字符,其中 B 有且仅有一个。
  • 数据不对 L 的数量做任何保证!