結果
問題 | No.1065 電柱 / Pole (Easy) |
ユーザー |
|
提出日時 | 2022-09-28 00:34:11 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,091 ms / 2,000 ms |
コード長 | 782 bytes |
コンパイル時間 | 586 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 160,156 KB |
最終ジャッジ日時 | 2024-12-22 17:19:10 |
合計ジャッジ時間 | 26,321 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 46 |
ソースコード
from collections import defaultdict from math import sqrt from heapq import heapify, heappop, heappush n, m = map(int, input().split()) x, y = map(int, input().split()) x -= 1 y -= 1 P = [list(map(int, input().split())) for _ in range(n)] Edge = defaultdict(list) for _ in range(m): p, q = map(int, input().split()) p -= 1 q -= 1 d = sqrt((P[p][0] - P[q][0])**2 + (P[p][1] - P[q][1])**2) Edge[p].append((q, d)) Edge[q].append((p, d)) INF = 10**18 D = [INF for _ in range(n)] D[x] = 0 H = [(0, x)] heapify(H) while H: d, cp = heappop(H) if cp == y: print(d) break if d > D[cp]: continue for np, dd in Edge[cp]: if d + dd >= D[np]: continue D[np] = d + dd heappush(H, (d + dd, np))