結果
問題 |
No.3111 Toll Optimization
|
ユーザー |
![]() |
提出日時 | 2025-04-25 20:43:40 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 2,090 ms / 5,000 ms |
コード長 | 790 bytes |
コンパイル時間 | 503 ms |
コンパイル使用メモリ | 82,272 KB |
実行使用メモリ | 163,480 KB |
最終ジャッジ日時 | 2025-04-25 20:44:17 |
合計ジャッジ時間 | 29,741 ms |
ジャッジサーバーID (参考情報) |
judge1 / 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(now == N-1): print(cost) exit() 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)) print(-1)