公交路线
时间限制:1秒 内存限制:256M
【问题描述】
城市中最近得到了一些新的居民点,市政府想新开通一些公交路线,使得所有居民点可以经过原有的或是新修的公交线互达,也就是说,从任一个居民点都可以经过一些首尾相连公交线到达剩下的所有居民点。有些居民点之间原本就有公交线相连。
所有 \(N\) 个居民点(用 \(1\)到 \(N\) 顺次编号)在地图上都表示为坐标为 \((X_i,Y_i)\) 的点,两个居民点间公交线的长度自然就是代表它们的点之间的距离。现在市政府也告诉了你居民点间原有的 \(M\) 条路分别连接了哪两个居民点,希望你计算一下,为了使得所有居民点连通,所需开设公交线的最小总长是多少?
【输入格式】
第一行是两个用空格隔开的整数:\(N\) 和 \(M\)。
第 2 到 \(N+1\) 行,第 \(i+1\) 行为 2 个用空格隔开的整数:\(X_i、Y_i\)
第 \(N+2\) 到 \(N+M+2\) 行: 每行用 2 个以空格隔开的整数 \(i、j\) 描述了一条已有的公交线,这条公交线连接了居民点 \(i\) 和居民点 \(j\)。
【输出格式】
输出使所有居民点连通所需建设公交线的最小总长,保留 2 位小数,不必做任何额外的取整操作。为了避免精度误差,计算居民点间距离及答案时请使用 64 位实型变量。
【输入输出样例】
Input
4 1
1 1
3 1
2 3
4 3
1 4
Output
4.00
【数据说明】
对于 \(100\%\) 的数据 \(1≤N≤1000\),\(1≤M≤10000\),\(0≤X_i,Y_i≤100000\)。
【来源】
Mr.he