結果
問題 |
No.3111 Toll Optimization
|
ユーザー |
![]() |
提出日時 | 2025-05-17 15:21:55 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 843 bytes |
コンパイル時間 | 434 ms |
コンパイル使用メモリ | 82,156 KB |
実行使用メモリ | 123,292 KB |
最終ジャッジ日時 | 2025-05-17 15:22:27 |
合計ジャッジ時間 | 28,814 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 53 WA * 17 |
ソースコード
from heapq import * N,M,K = map(int,input().split()) C = list(map(int,input().split())) INF = 10 ** 16 KN = K * N E = [[] for _ in range(N)] for i in range(M): u,v = map(int,input().split()) u -= 1 v -= 1 E[u].append((v,i)) E[v].append((u,i)) D = [INF] * ((K+1) * N) D[0] = 0 def dijkstra(): q = [(0,0)] while q: d, u1 = heappop(q) if d > D[u1]: continue k = u1 // N u = u1 % N for v,i in E[u]: if k < K: a = v + N * (k + 1) if D[a] > D[u]: D[a] = D[u] heappush(q, (D[a], a)) a = v + k * N if D[a] > D[u1] + C[i]: D[a] = D[u1] + C[i] heappush(q, (D[a], a)) return dijkstra() if D[-1] == INF: print(-1) else: print(D[-1])