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))