結果

問題 No.1065 電柱 / Pole (Easy)
コンテスト
ユーザー LyricalMaestro
提出日時 2026-05-12 01:54:55
言語 PyPy3
(7.3.23 + ACL)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 949 ms / 2,000 ms
+ 933µs
コード長 1,217 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 82 ms
コンパイル使用メモリ 64,816 KB
実行使用メモリ 137,024 KB
最終ジャッジ日時 2026-10-14 01:13:43
合計ジャッジ時間 22,457 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge5_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 47
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

## https://yukicoder.me/problems/no/1065

import heapq
import math



def main():
    N, M = map(int, input().split())
    X, Y = map(int, input().split())
    X -= 1
    Y -= 1
    pq = []
    for _ in range(N):
        p, q = map(int, input().split())
        pq.append((p, q))
    
    next_nodes = [[] for _ in range(N)]
    for _ in range(M):
        P, Q = map(int, input().split())
        P -= 1
        Q -= 1

        p0, q0 = pq[P]
        p1, q1 = pq[Q]
        d = math.sqrt((p0 - p1) ** 2 + (q0 - q1) ** 2)
        next_nodes[P].append((Q, d))
        next_nodes[Q].append((P, d))
    
    seen = [float("inf") for _ in range(N)]
    fix = [float("inf") for _ in range(N)]
    seen[X] = 0.0
    queue = []
    heapq.heappush(queue, (0.0, X))
    while len(queue) > 0:
        cost, v = heapq.heappop(queue)
        if fix[v] < float("inf"):
            continue

        fix[v] = cost
        for w, d in next_nodes[v]:
            if fix[w] < float("inf"):
                continue

            new_cost = d + cost
            if seen[w] > new_cost:
                seen[w] = new_cost
                heapq.heappush(queue, (new_cost, w))
    print(fix[Y])









if __name__ == '__main__':
    main()
0