#P14616. [2019 KAIST RUN Fall] Gosu 2

[2019 KAIST RUN Fall] Gosu 2

Description

Ho 是一种名为 跆博(Taebo)的武术专家。她经营着一所跆博学校,学校里有 NN 名学生。为了增加学校内部的竞争,她打算创建一个 跆博排名网站,为所有学生分配一定的排名。为了找到合适的排名,Ho 让所有 N(N1)/2N(N-1)/2 对学生相互进行了跆博对决。在跆博对决中,恰好有一人获胜,另一人失败。跆博对决的结果可能并不简单:例如,可能存在学生 A 击败 B,B 击败 C,而 C 击败 A 的情况。这种情况会使排名分配变得相当复杂,因为无法从这三名学生中确定明确的胜者。

为了解决这个问题,Ho 将找到一个 标准排名链,并基于该链为其他学生分配排名。一个长度为 KK标准排名链 是一个由 KK 名不同学生组成的序列 S1,S2,,SkS_1, S_2, \ldots, S_k,满足 SiS_i 击败 SjS_j 当且仅当 i<ji < j。换句话说,S1S_1 可以击败链中的所有其他学生,S2S_2 可以击败链中除 S1S_1 外的所有学生,S3S_3 可以击败链中除 S1,S2S_1, S_2 外的所有学生,依此类推,而 SkS_k 无法击败链中的任何其他学生。Ho 的网站将基于这样的链为其他学生分配排名,这将使分配过程更简单。

Ho 不仅是跆博专家,还是一位数学天才。Ho 知道,对于任何跆博对决结果,她都能找到一个长度为 1+log2(N)1 + \lfloor \log_2(N) \rfloor 的标准排名链,其中 log2(N)\log_2(N) 是以 22 为底的对数。换句话说,对于任意满足 2k1N2^{k-1} \le Nk1k \geq 1,Ho 都能找到这样一个长度的标准排名链。

虽然 Ho 也非常擅长计算机编程,但她有点懒,因此她把这项工作委托给了你。你需要找到一个长度恰好为 1+log2(N)1 + \lfloor \log_2(N) \rfloor 的标准排名链。

Input Format

第一行给出测试用例的数量 TT。对于每个测试用例,给出以下信息:

第一行给出学生数量 NN

接下来的 NN 行中,第 ii 行给出一个由字符 W\texttt{W}L\texttt{L}-\texttt{-} 组成的字符串 sis_i。记 sis_i 的第 jj 个字符为 si,js_{i,j}si,js_{i,j} 的给出规则如下:

  • i=ji = j,则 si,j=-s_{i,j} = \texttt{-}
  • 若学生 ii 击败了学生 jj,则 si,j=Ws_{i,j} = \texttt{W}
  • 若学生 jj 击败了学生 ii,则 si,j=Ls_{i,j} = \texttt{L}

约束条件:

  • 1T250,0001 \le T \le 250,000
  • 1N5121 \le N \le 512
  • 所有测试用例的 N2N^2 之和不超过 2,500,0002,500,000
  • si,i=-s_{i, i} = \texttt{-}1iN1 \le i \le N
  • iji \neq j,则 si,j=Ws_{i, j} = \texttt{W}si,j=Ls_{i, j} = \texttt{L}1iN1 \le i \le N
  • si,j=Ws_{i, j} = \texttt{W},则 sj,i=Ls_{j, i} = \texttt{L}1i,jN1 \le i, j \le N
  • si,j=Ls_{i, j} = \texttt{L},则 sj,i=Ws_{j, i} = \texttt{W}1i,jN1 \le i, j \le N

Output Format

对于每个测试用例,在一行中输出恰好 1+log2(N)1 + \lfloor \log_2(N) \rfloor 个整数,表示标准排名链中的学生编号,按技能顺序排列。可以证明对于所有可能的输入,这样的链总是存在的。

5
1
-
2
-W
L-
3
-LW
W-L
LW-
4
-WLW
L-WL
WL-W
LWL-
5
-WLLW
L-LLW
WW-LL
WWW-W
LLWL-
1
1 2
3 2
3 1 4
4 3 1

Hint

翻译由 DeepSeek V3 完成