Skip to content

Commit 86a52a1

Browse files
authored
Update 2.py
1 parent 16df8de commit 86a52a1

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

9/2.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,49 @@
1-
import queue
1+
import heapq
22
import sys
33
input = sys.stdin.readline
4+
INF = int(1e9) # 무한을 의미하는 값으로 10억을 설정합니다.
45

56
# 노드의 개수, 간선의 개수를 입력 받습니다.
67
n, m = map(int, input().split())
78
# 시작 노드 번호를 입력 받습니다.
89
start = int(input())
910
# 각 노드에 연결되어 있는 노드에 대한 정보를 담는 리스트를 만듭니다.
10-
adj = [[] for i in range (n + 1)]
11-
# 최단 거리 테이블을 모두 무한(10억)으로 초기화합니다.
12-
distance = [1e9] * (n + 1)
11+
graph = [[] for i in range(n + 1)]
12+
# 최단 거리 테이블을 모두 무한으로 초기화합니다.
13+
distance = [INF] * (n + 1)
1314

1415
# 모든 간선 정보를 입력 받습니다.
1516
for _ in range(m):
1617
a, b, c = map(int, input().split())
1718
# a번 노드에서 b번 노드로 가는 비용이 c라는 의미입니다.
18-
adj[a].append((b, c))
19+
graph[a].append((b, c))
1920

2021
def dijkstra(start):
21-
q = queue.PriorityQueue()
22+
q = []
2223
# 시작 노드로 가기 위한 최단 경로는 0으로 설정하여, 큐에 삽입합니다.
23-
q.put((0, start))
24+
heapq.heappush(q, (0, start))
2425
distance[start] = 0
25-
while not q.empty():
26+
while q: # 큐가 비어있지 않다면
2627
# 가장 최단 거리가 짧은 노드에 대한 정보를 꺼냅니다.
27-
dist, now = q.get()
28+
dist, now = heapq.heappop(q)
29+
# 현재 노드가 이미 처리된 적이 있는 노드라면 무시합니다.
2830
if distance[now] < dist:
2931
continue
3032
# 현재 노드와 연결된 다른 인접한 노드들을 확인합니다.
31-
for i in adj[now]:
33+
for i in graph[now]:
3234
cost = dist + i[1]
3335
# 현재 노드를 거쳐서, 다른 노드로 이동하는 거리가 더 짧은 경우
34-
if distance[i[0]] > cost:
36+
if cost < distance[i[0]]:
3537
distance[i[0]] = cost
36-
q.put((cost, i[0]))
38+
heapq.heappush(q, (cost, i[0]))
3739

3840
# 다익스트라 알고리즘을 수행합니다.
3941
dijkstra(start)
4042

4143
# 모든 노드로 가기 위한 최단 거리를 출력합니다.
42-
for i in range (1, n + 1):
44+
for i in range(1, n + 1):
4345
# 도달할 수 없는 경우, 무한(INFINITY)이라고 출력합니다.
44-
if distance[i] == 1e9:
46+
if distance[i] == INF:
4547
print("INFINITY")
4648
# 도달할 수 있는 경우 거리를 출력합니다.
4749
else:

0 commit comments

Comments
 (0)