蓝桥杯国赛
from math import sqrt
inf = float('inf')
n, mx = map(int,input().split())
dot=[]
for i in range(n):
x,y=map(int,input().split())
dot.append((x,y))
e=[[inf for i in range(n+1)]for i in range(n+1)]
for i in range(n):
for j in range(i,n):
dis=sqrt((dot[i][0]-dot[j][0])**2+(dot[i][1]-dot[j][1])**2)
if dis<=mx:
e[i][j]=dis
e[j][i]=dis
for i in range(n):
for j in range(i,n):
for k in range(n):
if e[i][j]>e[i][k]+e[k][j]:
e[i][j]=e[i][k]+e[k][j]
def get_s(state):
res=[]
for i in range(n):
if (state&(1<<i)):
res.append(i)
return res
f=[[inf for i in range(n+1)]for j in range(1<<n+1)]
f[0][0]=0
for i in range(1<<n):
s=get_s(i)
for j in s:
pre_s=i^(1<<j)
for k in s:
if j!=k:
f[i][j]=min(f[i][j],f[pre_s][k]+e[k][j])
print(f[(1<<n)-1][0])