题目:洛谷P2872、POJ3625。
题目大意:给你n个点的坐标,有些点已经有边连通,现在要你连上剩下的所有点,求这些边的最小长度是多少(不包括原来的边)。
解题思路:最小生成树,把所有边处理出来,跑Kruskal即可。注意原来有的边优先级最高且长度不加进答案。由于边的总数是$n^2$级别的,所以时间复杂度$O(n^2\log n^2)$。
C++ Code:
#include#include #include #include using namespace std;int n,m,fa[1005],cnt;int b[1005][1005];struct zb{ int x,y;}a[1005];struct edge{ int u,v; double l; int b; bool operator <(const edge& rhs)const{ if(b!=rhs.b)return b>rhs.b; return l