import heapq n, m = map(int, input().split()) x, y = map(int, input().split()) pq = [] for _ in range(n): p, q = map(int, input().split()) pq.append((p, q)) graph = [[] for _ in range(n)] for _ in range(m): u, v = map(int, input().split()) graph[u-1].append(v-1) graph[v-1].append(u-1) f = lambda a, b: ((a[0]-b[0])**2+(a[1]-b[1])**2)**0.5 INF = 10**9 heap = [] dist = [INF]*n dist[x-1] = 0 heap = [(0, x-1)] heapq.heapify(heap) while heap: _, node = heapq.heappop(heap) for i in graph[node]: if dist[i] > dist[node] + f(pq[node], pq[i]): dist[i] = dist[node] + f(pq[node], pq[i]) heapq.heappush(heap, (dist[i], i)) print(dist[y-1])