結果

問題 No.1065 電柱 / Pole (Easy)
ユーザー stng
提出日時 2022-08-19 17:28:10
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,109 ms / 2,000 ms
コード長 1,110 bytes
コンパイル時間 324 ms
コンパイル使用メモリ 82,012 KB
実行使用メモリ 170,192 KB
最終ジャッジ日時 2024-10-08 01:10:19
合計ジャッジ時間 27,320 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 46
権限があれば一括ダウンロードができます

ソースコード

diff #

from heapq import heappush, heappop
INF = 10 ** 9
def dijkstra(s, n): # (始点, ノード数)
    dist = [INF] * n
    hq = [(0, s)] # (distance, node)
    dist[s] = 0
    seen = [False] * n # ノードが確定済みかどうか
    while hq:
        tmp = heappop(hq) # ノードを pop する
        v = tmp[1]
        c = tmp[0]
        seen[v] = True
        if dist[v] != c:
            continue
        for to, cost in adj[v]: # ノード v に隣接しているノードに対して
            if seen[to] == False and dist[v] + cost < dist[to]:
                dist[to] = dist[v] + cost
                heappush(hq, (dist[to], to))
    return dist

n,m = map(int,input().split())
x,y = map(int,input().split())
pq = [[int(i) for i in input().split()] for j in range(n)]
PQ = [[int(i) for i in input().split()] for j in range(m)]

adj = [[] for i in range(n)]

for i in range(m):
    P,Q = PQ[i]
    P -= 1
    Q -= 1
    lp = pq[P]
    lq = pq[Q]
    tmp = ((lp[0]-lq[0])**2+(lp[1]-lq[1])**2)**0.5
    adj[P].append([Q,tmp])
    adj[Q].append([P,tmp])

x -= 1
y -= 1
di = dijkstra(x,n)
print(di[y])
0