Coding Test/BaekJoon_Python
백준 11265 <끝나지 않는 파티> Python
JunOnJuly
2024. 12. 16. 16:53
728x90
https://www.acmicpc.net/problem/11265
워셜-플로이드 알고리즘 문제입니다.
매번 다른 노드에서 다른 노드로 최단거리를 알아내야 하는 문제를 접했을 때, 다익스트라를 여러 번 사용하기 보다 한번에 모든 노드에서 모든 노드로 향하는 최단거리를 구할 때 보다 효율적인 경우가 있습니다.
그런 경우에 벨만-포드 알고리즘이나 워셜-플로이드 알고리즘을 활용할 수 있습니다.
import sys
input = sys.stdin.readline
def solution(N, M, edges, querys):
### 최단거리 업데이트
## 플로이드-워셜
# 거쳐갈 노드
for mid in range(N):
# 출발 노드
for start in range(N):
# 끝 노드
for end in range(N):
edges[start][end] = min(edges[start][end], edges[start][mid] + edges[mid][end])
# 쿼리 처리
for A, B, C in querys:
# 시간 비교
if edges[A-1][B-1] <= C:
print('Enjoy other party')
else:
print("Stay here")
# 입력
N, M = map(int, input().strip().split())
edges = [list(map(int, input().strip().split())) for _ in range(N)]
querys = [list(map(int, input().strip().split())) for _ in range(M)]
solution(N, M, edges, querys)
728x90