結果
問題 | No.3111 Toll Optimization |
ユーザー |
![]() |
提出日時 | 2025-04-25 20:41:47 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 2,296 ms / 5,000 ms |
コード長 | 784 bytes |
コンパイル時間 | 572 ms |
コンパイル使用メモリ | 82,588 KB |
実行使用メモリ | 171,896 KB |
最終ジャッジ日時 | 2025-04-25 20:43:04 |
合計ジャッジ時間 | 63,358 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 70 |
ソースコード
import heapq N,M,K = list(map(int,input().split())) C = list(map(int,input().split())) edge = [[] for _ in range(N)] for i in range(M): u,v = list(map(int,input().split())) u -= 1;v -= 1 edge[u].append((v,C[i])) edge[v].append((u,C[i])) INF = 10**18 visited = [[INF for _ in range(K+1)] for _ in range(N)] q = [(0,0,0)] while(q): cost,pon,now = heapq.heappop(q) if(visited[now][pon] <= cost):continue visited[now][pon] = cost for v,w in edge[now]: if(visited[v][pon] <= cost+w):continue heapq.heappush(q,(cost+w,pon,v)) if(pon != K): for v,w in edge[now]: if(visited[v][pon+1] <= cost):continue heapq.heappush(q,(cost,pon+1,v)) ans = min(visited[-1]) print(ans if ans != INF else -1)