結果
問題 | No.1382 Travel in Mitaru city |
ユーザー |
![]() |
提出日時 | 2021-02-07 21:08:13 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 389 ms / 2,000 ms |
コード長 | 1,040 bytes |
コンパイル時間 | 178 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 105,752 KB |
最終ジャッジ日時 | 2024-07-04 14:20:54 |
合計ジャッジ時間 | 17,022 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 68 |
ソースコード
# coding:UTF-8import sysfrom heapq import heappush, heappopMOD = 10 ** 9 + 7INF = float('inf')N, M, S, T = list(map(int, input().split())) # スペース区切り連続数字P = list(map(int, input().split())) # スペース区切り連続数字AB = [list(map(int, input().split())) for _ in range(M)] # スペース区切り連続数字(行列)dist = [[] for _ in range(N)] # dist[n]: ノード n に隣接する(ノード, 重み)をリストで持つfor a, b in AB:dist[a-1].append(b-1)dist[b-1].append(a-1) # 双方向の場合追加するY = 0X = P[S-1]hq = [(-P[S-1], S-1)] # (distance, node)seen = [False] * N # ノードが確定済みかどうかseen[S-1] = Truewhile hq:d, v = heappop(hq) # ノードを pop するd = -dif d < X:X = dY += 1for to in dist[v]: # ノード v に隣接しているノードに対してif seen[to] == False:heappush(hq, (-P[to], to))seen[to] = Trueprint("{}".format(Y))