Skip to content

Commit acb4293

Browse files
committed
횡단보도 풀이
1 parent 4a4a326 commit acb4293

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

BAEKJOON/3Gold/횡단보도.py

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#
2+
# https://www.acmicpc.net/problem/24042
3+
4+
"""
5+
4 5
6+
1 2
7+
3 4
8+
1 3
9+
4 1
10+
2 3
11+
"""
12+
13+
input = __import__("sys").stdin.readline
14+
15+
N,M = map(int, input().split())
16+
graph = [[] for _ in range(N+1)]
17+
for i in range(M):
18+
a,b = map(int, input().split())
19+
graph[a].append((b,i))
20+
graph[b].append((a,i))
21+
22+
INF = int(1e11)
23+
24+
def dijkstra():
25+
import heapq
26+
27+
dist = [INF]*(N+1)
28+
heap = [(0, 1)]
29+
dist[1] = 0
30+
31+
while heap:
32+
cost, node = heapq.heappop(heap)
33+
34+
if dist[node] < cost:
35+
continue
36+
37+
timing = cost % M
38+
for nxt_node, nxt_timing in graph[node]:
39+
nxt_cost = dist[node]+1
40+
if nxt_timing >= timing:
41+
nxt_cost += nxt_timing-timing
42+
else:
43+
nxt_cost += M+nxt_timing-timing
44+
45+
if nxt_cost >= dist[nxt_node]:
46+
continue
47+
48+
dist[nxt_node] = nxt_cost
49+
heapq.heappush(heap, (nxt_cost, nxt_node))
50+
51+
print(dist[N])
52+
53+
dijkstra()

0 commit comments

Comments
 (0)