結果
問題 | No.1449 新プロランド |
ユーザー |
|
提出日時 | 2022-06-04 15:54:57 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 272 ms / 2,000 ms |
コード長 | 1,238 bytes |
コンパイル時間 | 306 ms |
コンパイル使用メモリ | 82,308 KB |
実行使用メモリ | 92,228 KB |
最終ジャッジ日時 | 2024-12-24 02:09:50 |
合計ジャッジ時間 | 5,723 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 26 |
ソースコード
import sysfrom heapq import heappop, heappushinput = sys.stdin.buffer.readlinedef dijkstra(N, G, s):INF = 10 ** 9dist = [INF] * Nque = [(0, s)]dist[s] = 0while que:c, v = heappop(que)if dist[v] < c:continuefor t, cost in G[v]:if dist[v] + cost < dist[t]:dist[t] = dist[v] + costheappush(que, (dist[t], t))return distN, M = map(int, input().split())MAX_TIME = 1000G = [[] for _ in range(N * (MAX_TIME + 1))]def pair2int(num, time):return min(time, MAX_TIME) * N + numdef add_edge(s_num, t_num, s_time, eat_time, length):t_time = s_time + eat_timeif not t_time:returnG[pair2int(s_num, s_time)].append((pair2int(t_num, t_time), eat_time + length // t_time))edges = []for _ in range(M):a, b, c = map(int, input().split())a -= 1b -= 1edges.append((a, b, c))T = tuple(map(int, input().split()))for a, b, c in edges:for time in range(MAX_TIME + 1):add_edge(a, b, time, T[a], c)add_edge(b, a, time, T[b], c)dist = dijkstra(len(G), G, pair2int(0, 0))ans = min(dist[pair2int(N - 1, time)] for time in range(MAX_TIME + 1))print(ans)