fork download
  1. n = int(input())
  2. arr = []
  3. check = []
  4. def solve(start, a) :
  5.  
  6. for i in range(n) :
  7. if arr[a][i] == 1 : #간선이 있다면
  8.  
  9. if check[a][i] == False : #만약 탐색이 안 되었으면
  10. check[a][i] = True #탐색을 하고
  11. arr[start][i] =1 # 처음 시작한 데서 목적지까지 경로가 있음
  12.  
  13. solve(start,i)
  14.  
  15.  
  16. for i in range(n) :
  17. arr.append(list(map(int,input().split())))
  18. check.append([False] * n)
  19.  
  20. for i in range(n) :
  21.  
  22. solve(i,i)
  23. for j in range(n) :
  24. for t in range(n) :
  25. check[j][t] = False
  26.  
  27. for i in range(n) :
  28. for j in range(n) :
  29. print(arr[i][j], end=" ")
  30. print()
  31.  
  32.  
  33.  
  34.  
Success #stdin #stdout 0.02s 9420KB
stdin
7
0 0 0 1 0 0 0
0 0 0 0 0 0 1
0 0 0 0 0 0 0
0 0 0 0 1 1 0
1 0 0 0 0 0 0
0 0 0 0 0 0 1
0 0 1 0 0 0 0
stdout
1 0 1 1 1 1 1 
0 0 1 0 0 0 1 
0 0 0 0 0 0 0 
1 0 1 1 1 1 1 
1 0 1 1 1 1 1 
0 0 1 0 0 0 1 
0 0 1 0 0 0 0