题目描述
给出一个集合关系的矩阵表示,请输出它传递闭包的矩阵表示。
输入
第一行是一个正整数n(n<100),代表矩阵的行数与列数。
下面n行描述一个矩阵。
输出
请输出其的传递闭包的矩阵表示。
样例输入
3
1 0 1
1 1 0
0 1 1
样例输出
1 1 1
1 1 1
1 1 1
提示
在数学中,在集合 X 上的二元关系 R 的传递闭包是包含 R 的 X 上的最小的传递关系。
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i,j,k,a[100][100];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
if(a[j][i]==1)
{
for(k=0;k<n;k++)
a[j][k]=(a[i][k]|a[j][k]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}