#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1e3+6;
int a[maxn][maxn];
int n;
int warshall(int a[][maxn])
{
for(int i=0;i<n;i++)
{
for(int k=0;k<n;k++)
if(a[k][i])
for(int j=0;j<n;j++)
a[k][j]=a[k][j]|a[i][j];//逻辑加
}
return 1;
}
int main()
{
printf("请输入矩阵的大小n(n<=100) : ");
scanf("%d",&n);
printf("请输入矩阵:\n");
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&a[i][j]);
warshall(a);
printf("传递闭包是这个:\n");
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}