結果
| 問題 | No.3111 Toll Optimization |
| コンテスト | |
| ユーザー |
ntuda
|
| 提出日時 | 2025-05-17 15:28:52 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 911 bytes |
| 記録 | |
| コンパイル時間 | 1,969 ms |
| コンパイル使用メモリ | 82,544 KB |
| 実行使用メモリ | 123,292 KB |
| 最終ジャッジ日時 | 2025-05-17 15:29:33 |
| 合計ジャッジ時間 | 30,396 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / 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()
ans = INF
for i in range(K + 1):
ans = min(ans,D[(i + 1) * N - 1])
if ans == INF:
print(-1)
else:
print(ans)
ntuda