結果
問題 | No.1382 Travel in Mitaru city |
ユーザー | manini |
提出日時 | 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-8 import sys from heapq import heappush, heappop MOD = 10 ** 9 + 7 INF = 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 = 0 X = P[S-1] hq = [(-P[S-1], S-1)] # (distance, node) seen = [False] * N # ノードが確定済みかどうか seen[S-1] = True while hq: d, v = heappop(hq) # ノードを pop する d = -d if d < X: X = d Y += 1 for to in dist[v]: # ノード v に隣接しているノードに対して if seen[to] == False: heappush(hq, (-P[to], to)) seen[to] = True print("{}".format(Y))