#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define N 100
#define WARSHALLB
int a[N][N];
int b[N][N];
const int n = 5;
void random(void)
{
int i, j;
srand(time(NULL));
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
a[i][j] = rand()%10 > 2 ? 0 : 1;
}
}
}
void passdata(void)
{
int i, j;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
b[i][j] = a[i][j];
}
}
}
void printdata(int a[][N])
{
int i, j;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
printf("\n");
}
int main()
{
int k, i, j;
//random();
//passdata();
//printdata(b);
while(1)
{
system("cls");
random();
passdata();
printdata(b);
#ifdef WARSHALLB
for(k = 0; k < n; k++)
{
for(i = 0; i < n; i++)
{
if(a[i][k] == 1)
{
for(j = 0; j < n; j++)
{
a[i][j] = a[i][j] | a[k][j];
}
}
}
//printdata(a);
}
printdata(a);
#endif
#ifdef WARSHALLA
for(k = 0; k < n; k++)
{
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
a[i][j] = a[i][j] | a[i][k] & a[k][j];
}
}
printdata(a);
}
#endif
Sleep(1000);
}
return 0;
}