京东 0914

import math
n = int(input())
city = []
for _ in range(n):
    x,y = map(int, input().split())
    city.append((x,y))
def dist(c1,c2):
  disx = (c1[0]-c2[0])**2
  disy = (c1[1]-c2[1])**2
  return (disx + disy)**0.5
# for i in range(n):
#     for j in range(n):
#         if i == j or j < i:
#             path[i][j] = path[j][i]
#         else:
#             path[i][j] = dist(city[i], city[j])
# prim
choose = {0}
lowCost= [float('inf')] + [dist(city[0], city[i]) for i in range(1,n)]
res = 0
while len(choose) < n:
    mi = min(lowCost)
    res = max(res, mi)
    mi_idx = lowCost.index(mi)
    choose.add(mi_idx)
    lowCost[mi_idx] = float('inf')
    # 更新lowCost
    for i in range(n):
        if i not in choose:
            lowCost[i] = min(lowCost[i], dist(city[i], city[mi_idx]))
print(math.ceil(res/2))

# 3
# 0 0
# 0 5
# 6 0

# 2
# 0 0
# 1 0

正确答案分别为3 和 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值