# BFS, ダイクストラのどちらかか、ワーシャルフロイドはないだろう # ダイクストラでやってみるか # Pによって各辺コストが変わる、(マンハッタン距離+2P-1)//2P # それでK+1歩まででゴールにたどり着けるか # を二分探索 # BFSだと盤面のマス目を距離で埋める必要あるが盤面がない N, K = map(int, input().split()) Sx, Sy, Gx, Gy = map(int, input().split()) XY = [(Sx, Sy, 0)] for i in range(N): x, y = map(int, input().split()) XY.append((x, y, i+1)) XY.append((Gx, Gy, N+1)) edges = [[] for i in range(N+2)] for i in range(N+2): for j in range(i+1, N+2): cost = abs(XY[i][0]-XY[j][0])+abs(XY[i][1]-XY[j][1]) edges[i].append((j, cost)) edges[j].append((i, cost)) # ダイクストラの辺コストをPで改造したバージョン from heapq import heappush, heappop INF = 10 ** 18 def dijkstra(s, n, connect, P): #(始点, ノード数) distance = [INF] * n que = [(0, s)] #(distance, node) distance[s] = 0 confirmed = [False] * n # ノードが確定済みかどうか while que: w,v = heappop(que) if distance[v]1: mid = (OK+NG)//2 if dijkstra(0, N+2, edges, mid)[N+1] <= K: OK = mid else: NG = mid print(OK)