728x90
https://www.acmicpc.net/problem/11403
플로이드-워셜 알고리즘을 사용해 풀 수 있습니다.
시작 노드와 중간 노드가 연결되어있고, 중간 노드와 끝 노드가 연결되어 있으면 시작 노드와 끝 노드도 연결되어 있음을 알 수 있습니다.
import sys
input = sys.stdin.readline
def solution(N, mat):
## 플로이드-워셜
# 중간 노드
for c in range(N):
# 시작 노드
for f in range(N):
# 끝 노드
for b in range(N):
# 시작 - 중간 / 중간 - 끝 이 이어져 있으면
if mat[f][c] and mat[c][b]:
# 시작 - 끝도 이어져 있음
mat[f][b] = 1
for i in mat:
print(*i)
# 입력
N = int(input().strip())
mat = [list(map(int, input().strip().split())) for _ in range(N)]
solution(N, mat)
728x90
'Coding Test > BaekJoon_Python' 카테고리의 다른 글
백준 1368 <물대기> Python (0) | 2024.12.24 |
---|---|
백준 13418 <학교 탐방하기> Python (0) | 2024.12.23 |
백준 16562 <친구비> Python (0) | 2024.12.18 |
백준 2665 <미로 만들기> Python (0) | 2024.12.17 |
백준 11265 <끝나지 않는 파티> Python (0) | 2024.12.16 |