import sys
import heapq
import math

input = sys.stdin.readline

n = int(input())

g = [list(map(float, input().split())) for i in range(n)]

edges = [[] for i in range(n)]

for i in range(n):
for j in range(n):
if i == j:
edges[i].append(0)
else:
edges[i].append(
math.sqrt(pow(g[i][0] - g[j][0], 2) + pow(g[i][1] - g[j][1], 2))
)
d = [0] * n
v = [0] * n

def prim_jarnik(s):
for i in range(n):
d[i] = edges[s][i]
q = []
for i in range(n):
heapq.heappush(q, [d[i], i])

while q:
a, b = heapq.heappop(q)
v[b] = 1
for i in range(n):
if v[i] == 0 and edges[i][b] < d[i]:
d[i] = edges[i][b]
for j in range(len(q)): if q[j][1] == i: q[j][0] = edges[i][b]

prim_jarnik(n - 1)
print(round(sum(d), 2))



https://www.acmicpc.net/problem/4386


Baekjoon Online JudgeBaekjoon Online Judgewww.acmicpc.net


예제고 반례고 다 해봤는데 다 되는데 틀립니다.... 뭐가 잘못됐는지 모르겟습니다...