import numpy as np
A = np.mat([[0, 0, 0, 0, 0],
[0, 0, 1, 1, 0],
[1, 0, 0, 1, 0],
[0, 0, 1, 0, 1],
[1, 0, 0, 0, 0]])
I =np.identity(len(A))
B=A+I
for i in range(len(B)):
for j in range(len(B)):
if B[i, j] >= 1:
B[i, j] = 1
C=B
flag=0
while (flag==0):
C = B
B = C*B
for i in range(len(B)):
for j in range(len(B)):
if B[i, j] >= 1:
B[i, j] = 1
if (C == B).all():
flag = 1
print('可达矩阵为:\n',B)
G=np.zeros((1,len(A)))
for i in range (len(A)):
for j in range (len(A)):
if(B[i,j]>=1):
G[0][j]=G[0][j]+1
p=5
num=0
print('要素层级为:')
while(p>0):
for i in range (len(A)):
if(G[0][i]==p):
print(i+1,end=' ')
num=num+1
if(num>0):
print('')
num=0
p=p-1