結果
問題 |
No.1065 電柱 / Pole (Easy)
|
ユーザー |
|
提出日時 | 2020-08-31 14:21:31 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,008 bytes |
コンパイル時間 | 397 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 112,512 KB |
最終ジャッジ日時 | 2024-11-15 22:39:17 |
合計ジャッジ時間 | 51,209 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 43 TLE * 3 |
ソースコード
from math import sqrt import heapq def dijkstra(s, h, graph): n = len(graph)-1 dist = [float("inf") for i in range(n+1)] dist[s] = 0 pq = [] heapq.heapify(pq) heapq.heappush(pq, (0, s)) while pq: mini_dis, node = heapq.heappop(pq) if dist[node] < mini_dis: continue for w, point in graph[node]: if dist[point] < w: continue newlen = dist[node]+w if newlen < dist[point]: heapq.heappush(pq, (newlen, point)) dist[point] = newlen return dist N,M = map(int,input().split()) X,Y = map(int,input().split()) l = [[] for _ in range(N+1)] d = [[] for _ in range(N+1)] for i in range(1,N+1): a,b = map(int,input().split()) d[i].append(a) d[i].append(b) for _ in range(M): a,b = map(int,input().split()) dist = sqrt((d[a][0]-d[b][0])**2 + (d[a][1]-d[b][1])**2) l[a].append((dist,b)) l[b].append((dist,a)) ans = dijkstra(X, Y, l) print(ans[Y])