农村连接城市
题号:NC21315
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
Special Judge, 64bit IO Format: %lld

题目描述

平面上有N个城市和M个乡村,一开始没有任何的道路
为了改善这个局面,主席决定采取一些策略使得每个乡村都能连接到至少一个城市
当存在一个乡村与任何城市都没有联系时,执行如下操作
1:随机挑选一个未联系的乡村V
2:选择离V最近(欧几里得距离)的一个已链接城市的乡村或者城市,如果有多个,满足条件的点,随机选择,假设选择的点为P
3:在V与P之间 建设一条道路

求期望需要修建多长的道路能使得所有的乡村都能直接或者间接的连接到城市

输入描述:

第一行输入两个整数n,m (1 ≤ n ≤ 50, 1 ≤ m ≤ 50)
接下来一行输入n个整数cityX[i]表示第i个城市的x坐标
接下来一行输入n个整数cityY[i]表示第i个城市的y坐标
接下来一行输入m个整数villageX[i]表示第i个乡村的x坐标
接下来一行输入m个整数villageY[i]表示第i个乡村的y坐标

所有的点的坐标都是唯一的
所有坐标的值都在0到1000000以内

输出描述:

输出一个浮点数,误差在1e-9之内
示例1

输入

复制
1 2
3
0
3 3
2 1

输出

复制
2.5
示例2

输入

复制
4 4
1 4 7 10
5 5 5 5 
1 4 7 10
4 4 4 4

输出

复制
4.0
示例3

输入

复制
3 3
1 2 3
4 4 4
4 5 6
4 4 4

输出

复制
4.166666666666667

备注:

子任务1: n+m <= 20
子任务2: n+m <= 50
子任务3: 无限制