結果
問題 | No.2569 はじめてのおつかいHard |
ユーザー | Koi |
提出日時 | 2023-12-02 16:08:29 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,508 ms / 2,000 ms |
コード長 | 1,221 bytes |
コンパイル時間 | 286 ms |
コンパイル使用メモリ | 82,688 KB |
実行使用メモリ | 150,884 KB |
最終ジャッジ日時 | 2024-09-26 19:52:58 |
合計ジャッジ時間 | 9,093 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 424 ms
109,204 KB |
testcase_01 | AC | 413 ms
109,748 KB |
testcase_02 | AC | 429 ms
110,084 KB |
testcase_03 | AC | 420 ms
109,600 KB |
testcase_04 | AC | 401 ms
109,360 KB |
testcase_05 | AC | 1,092 ms
148,272 KB |
testcase_06 | AC | 1,508 ms
134,360 KB |
testcase_07 | AC | 631 ms
145,920 KB |
testcase_08 | AC | 967 ms
150,884 KB |
testcase_09 | AC | 816 ms
125,520 KB |
testcase_10 | AC | 45 ms
52,352 KB |
testcase_11 | AC | 45 ms
52,864 KB |
ソースコード
N,M=map(int,input().split()) G1=[[] for _ in range(N+1)] G2=[[] for _ in range(N+1)] for _ in range(M): u,v,t=map(int,input().split()) G1[u].append([v,t]) G2[v].append([u,t]) import sys import heapq def dijkstra(graph, start): # 初期化 n = len(graph) visited = [False] * n distance = [10**19] * n distance[start] = 0 pq = [(0, start)] # ダイクストラ法 while pq: # 未処理の中で最小の距離を持つ頂点を取り出す dist, u = heapq.heappop(pq) if visited[u]: continue # 訪問済みにする visited[u] = True # uから到達可能な頂点の距離を更新する for v, weight in graph[u]: if not visited[v]: new_distance = distance[u] + weight if new_distance < distance[v]: distance[v] = new_distance heapq.heappush(pq, (new_distance, v)) return distance d1=dijkstra(G1,N-1)#N-1からの最短 d2=dijkstra(G1,N) d3=dijkstra(G2,N-1)#N-1への最短 d4=dijkstra(G2,N) for i in range(1,N-1): ans=min(d3[i]+d1[N]+d2[i],d4[i]+d2[N-1]+d1[i]) if(ans>=10**19): ans=-1 print(ans)