풀이
#플로이드워셜
입력 받은 배열에 따라 floyd계산 배열을 초기화해준 후 플로이드워셜을 수행한다.
모든 관계에 대한 값을 구한 후 floyd 계산 값이 1이상 2이하인 경우에 2-친구 수를 증가시키고 이 작업이 끝나면 최대값을 출력한다.
코드
N = int(input())
INF = 1e9
arr = [list(input().strip()) for _ in range(N)]
floyd = [[INF]*N for _ in range(N)]
result = [0 for _ in range(N)]
for i in range(N):
floyd[i][i]=0
for j in range(N):
if arr[i][j] == 'Y':
floyd[i][j] = 1
for k in range(N):
for i in range(N):
for j in range(N):
floyd[i][j] = min(floyd[i][j], floyd[i][k]+floyd[k][j])
for i in range(N):
for j in range(N):
if 0<floyd[i][j]<=2:
result[i]+=1
print(max(result))
'알고리즘연습 > 백준' 카테고리의 다른 글
[BOJ] 1374번 강의실 파이썬 (0) | 2022.09.07 |
---|---|
[BOJ] 1024번 수열의 합 파이썬 (0) | 2022.09.03 |
[BOJ] 5567번 결혼식 파이썬 (0) | 2022.08.23 |
[BOJ] 3187번 양치기 꿍 파이썬 (0) | 2022.08.23 |
[BOJ] 17086번 아기 상어2 파이썬 (0) | 2022.08.19 |