用warshall算法求关系闭包(离散数学)
#include<stdio.h>
main()
{
int i,n,j,k,a,b,x[100][100];
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&x[i][j]);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
{
if(x[j][i])
x[j][k]=x[j][k]+x[i][k];
if(x[j][k])
x[j][k]=1;
}
printf("\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%d ",x[i][j]);
printf("\n");
}
}
return 0;
}
输入
4
0 1 0 0
0 0 0 1
0 0 0 0
1 0 1 0
输出
1 1 1 1
1 1 1 1
0 0 0 0
1 1 1 1
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。