#3166. 传递闭包

传递闭包

题目描述

对于一个 n 个节点的有向图,可以用 gi,j 表示是否存在节点 i 到节点 j 的边。

现在给定 n 个节点之间的连边关系,对于每个节点,计算能到达图中的哪些节点。

注意,一个节点必然是可以“到达”自身的。

输入

第一行一个整数 n,表示图的节点数。

接下来 n 行,每行 n 个整数 0 或 1,表示 n 个节点之间的连边关系。

更具体的说,第 i 行的第 j 个数为 1,表示存在节点 i 连向节点 j 的边,反之则不存在。

输出

输出 n 行,每行 n 个整数 0 或 1,表示每个节点能到达的节点。

更具体的说,第 i 行的第 j 个数为 1,表示节点 i 可以到达节点 j,反之则不行。

样例

4
0 1 0 0
0 0 1 0
0 0 0 1
0 1 0 0
1 1 1 1
0 1 1 1
0 1 1 1
0 1 1 1

数据说明

对于所有测试点,保证 1<=n<=400, 0<=gi,j<=1