-
[BOJ 23033, Python 3] 집에 빨리 가고 싶어!알고리즘/BOJ 2021. 10. 5. 12:58반응형
https://www.acmicpc.net/problem/23033
풀이
최단 시간을 구해야 하는데, A역에서 B역으로 가는데 걸리는 시간이 T이므로 다익스트라 알고리즘을 생각해볼 수 있습니다.
그리고 새로운 열차를 기다려서 타는 방법은 현재 시간이 W의 배수이면 그대로 현재 시간을 우선순위 큐에 넣어주고, 현재 시간이 W의 배수가 아니라면 (W - (현재 시간) % W)만큼 시간을 추가하여 움직이게 해주면 됩니다.
코드
12345678910111213141516171819input = __import__('sys').stdin.readlinefrom heapq import *n, m = map(int, input().split())adj = [[] for _ in range(n+1)]for i in range(m):a, b, t, w = map(int, input().split())adj[a].append((b, t, w))q = []; heappush(q, [0, 1])S = [float('inf')] * (n + 1); S[1] = 0while q:t, x = heappop(q)if S[x] != t: continueif x == n: print(t); exit()for nx, nt, w in adj[x]:val = t + nt + (0 if t % w == 0 else w - (t % w))if S[nx] > val:S[nx] = valheappush(q, [val, nx])cs 반응형'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 23288, Python 3] 주사위 굴리기 2 (0) 2021.10.25 [BOJ 23240, Python 3] Colorful Tower of Hanoi (0) 2021.10.13 [BOJ 23034, Python 3] 조별과제 멈춰! (0) 2021.10.05 [BOJ 20157, Python 3] 화살을 쏘자! (0) 2021.10.04 [BOJ 20158, Python 3] 사장님 달려가고 있습니다 (0) 2021.10.04