from heapq import * n, m = map(int, input().split()) x, y = map(int, input().split()) x -= 1 y -= 1 point = [list(map(int, input().split())) for _ in range(n)] edges = [[] for _ in range(n)] for _ in range(m): a, b = map(int, input().split()) a -= 1 b -= 1 edges[a].append(b) edges[b].append(a) def f(i, j): dx = point[j][0] - point[i][0] dy = point[j][1] - point[i][1] return (dx * dx + dy * dy) ** 0.5 inf = 1e20 dist = [inf] * n dist[x] = 0.0 hq = [(0.0, x)] while hq: d, pos = heappop(hq) if dist[pos] < d: continue for npos in edges[pos]: c = f(pos, npos) if dist[npos] > d + c: dist[npos] = d + c heappush(hq, (d + c, npos)) print(dist[y])