#DX0046. 矩阵的周期

矩阵的周期

题目描述

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

输入格式

第一行包含一个正整数 TT (1≤T≤201≤T≤20),表示测试数据的组数。

每组数据第一行包含一个正整数 nn (1≤n≤601≤n≤60),表示矩阵的大小。

接下来 nn 行,每行一个长度为 nn 的 0101 串,第 ii 行第 jj 列表示 Mi,jM_{i,j} (1≤i,j≤n1≤i,j≤n)。

输出格式

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

输入样例

1
9
010010000
001000001
000100000
010000000
000001000
000000100
000000010
000010001
000000000

输出样例

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