import math
#定义Node节点
class Node():
def __init__(self, city):
#到第一座导弹系统的距离
self.t1 = 0
#到第二座导弹系统的距离
self.t2 = 0
#输入第一座导弹的坐标位置
# s1 = input("输入整数x1 , y1,代表第一座导弹拦截系统的座标位置:")
s1 = input()
#以点为参考,切割
l1 = s1.split(" ")
#将坐标转换成列表
l1 = [int(i) for i in l1]
#输入第二座导弹的坐标位置
# s2 = input("输入整数x2 , y2,代表第二座导弹拦截系统的座标位置:")
s2 = input()
#以点为参考,切割
l2 = s2.split(" ")
#将坐标转换成列表
l2 = [int(j) for j in l2]
#输入城市的个数
# n = int(input("请输入城市个数:"))
n = int(input())
#用来存储城市的坐标
cities_lo = []
#循环输入城市个数,并以","分割,存在cities_to中
for city in range(n):
# n1 = input("输入城市坐标:")
n1 = input()
l3 = n1.split(" ")
l3 = [int(k) for k in l3]
cities_lo.append(l3)
# print(cities_lo)
#将每个城市分别转换成Node节点
cities_loNode = []
for citylo in cities_lo:
#转换成Node节点
cit = Node(citylo)
#计算到第一座导弹系统的距离
cit.t1 = math.sqrt((citylo[0] - l1[0]) ** 2 + (citylo[1] - l1[1]) ** 2)
#计算到第二座导弹系统的距离
cit.t2 = math.sqrt((citylo[0] - l2[0]) ** 2 + (citylo[1] - l2[1]) ** 2)
#添加到存储结构中
cities_loNode.append(cit)
# print(cities_loNode)
#求取每个城市到导弹系统的最小距离,并以列表的形式存储再cities_to_min中
cities_lo_min = [min(cite.t1, cite.t2) for cite in cities_loNode]
#求取每个城市到导弹系统的最大距离,并以列表的形式存储再max_to中
max_lo = [max(cite.t1, cite.t2) for cite in cities_loNode]
#以升序的形式排序
max_lo.sort()
#剔除最大值,为接下来的判别提供条件
max_lo = max_lo[:-1]
# print("max", max_lo)
# print(cities_lo_min)
#最小值列表排序
cities_lo_min.sort()
# print(cities_lo_min)
#判别,如果最小值列表中的最大值,大于所有最大值列表中的元素
#说明,此最小值可以覆盖所有城市
if cities_lo_min[-1] >= max(max_lo):
energy = int(cities_lo_min[-1] ** 2)
#否则,至少有一个城市没有覆盖到,还需加上最小值
else:
energy = int(cities_lo_min[0] ** 2 + cities_lo_min[-1] ** 2)
#最终输出消耗的最小能源
# print("消耗的最小能源为:", energy)
print(energy)
請大家幫忙指點