結果
問題 |
No.3111 Toll Optimization
|
ユーザー |
|
提出日時 | 2025-05-18 08:20:49 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,459 ms / 5,000 ms |
コード長 | 787 bytes |
コンパイル時間 | 925 ms |
コンパイル使用メモリ | 82,036 KB |
実行使用メモリ | 185,660 KB |
最終ジャッジ日時 | 2025-05-18 08:21:36 |
合計ジャッジ時間 | 45,263 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 70 |
ソースコード
import heapq N,M,K = map(int,input().split()) C = [0]+list(map(int,input().split())) G = {i:[] for i in range(1,(K+1)*N+1)} for i in range(1,M+1): u,v = map(int,input().split()) G[u].append((v,C[i])) G[v].append((u,C[i])) for k in range(1,K+1): G[u+k*N].append((v+k*N,C[i])) G[v+k*N].append((u+k*N,C[i])) G[u+k*N].append((v+(k-1)*N,0)) G[v+k*N].append((u+(k-1)*N,0)) INFTY = 10**14+100 dist = [INFTY]*((K+1)*N+1) dist[1+K*N] = 0 que = [(0,1+K*N)] while que: d,x = heapq.heappop(que) if dist[x]<d:continue for y,c in G[x]: if dist[y]>d+c: dist[y] = d+c heapq.heappush(que,(d+c,y)) ans = dist[N] for i in range(1,K+1): ans = min(ans,dist[i*N]) if ans>=INFTY: print(-1) else: print(ans)