#P9956. 矩阵的周期

矩阵的周期

矩阵的周期

Problem Description

给定一个 n×nn\times n 的01矩阵 M\textbf{M},令 f(i,j,k)=[(Mk)i,j0] f ( i , j , k ) = [(\textbf{M}^k)_{i,j}\neq 0],请对于每对 (i,j)(i,j) (1i,jn1\leq i,j\leq n),找出最小的正整数 tt,满足当 kk 充分大时必有 f(i,j,k)=f(i,j,k+t) f ( i , j , k ) = f ( i , j , k + t )

Input

第一行包含一个正整数 TT (1T201\leq T\leq 20),表示测试数据的组数。 每组数据第一行包含一个正整数 nn (1n601\leq n\leq 60),表示矩阵的大小。 接下来 nn 行,每行一个长度为 nn 的01串,第 ii 行第 jj 列表示 Mi,j\textbf{M}_{i,j} (1i,jn1\leq i,j\leq n)。

Output

对于每组数据输出 nn 行,第 ii (1in1\leq i\leq n) 行输出 nn 个整数,其中第 jj (1jn1\leq j\leq n) 个整数表示最小的正整数 tt,满足当 kk 充分大时必有 f(i,j,k)=f(i,j,k+t) f( i , j , k ) = f ( i , j , k + t ) ;若找不到这样的 tt,输出 ''-1\texttt{-1}''。

Sample Input

1
9
010010000
001000001
000100000
010000000
000001000
000000100
000000010
000010001
000000000

Sample Output

1 3 3 3 4 4 4 4 12
1 3 3 3 1 1 1 1 3
1 3 3 3 1 1 1 1 3
1 3 3 3 1 1 1 1 3
1 1 1 1 4 4 4 4 4
1 1 1 1 4 4 4 4 4
1 1 1 1 4 4 4 4 4
1 1 1 1 4 4 4 4 4
1 1 1 1 1 1 1 1 1

Source

2024“钉耙编程”中国大学生算法设计超级联赛(4)