这题和某道最短路题神似。对于任意点对,将他们连边,不如将他们分别沿$x,y$轴方向上点按顺序连起来,这样不仅可能多连通一些点,也花费更低,所以按照最短路那题的连边方式跑一个kruskal就行了。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#define dbg(x) cerr << #x << " = " << x <<endl
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
template<typename T>inline T _min(T A,T B){return A<B?A:B;}
template<typename T>inline T _max(T A,T B){return A>B?A:B;}
template<typename T>inline char MIN(T&A,T B){return A>B?(A=B,):;}
template<typename T>inline char MAX(T&A,T B){return A<B?(A=B,):;}
template<typename T>inline void _swap(T&A,T&B){A^=B^=A^=B;}
template<typename T>inline T read(T&x){
x=;int f=;char c;while(!isdigit(c=getchar()))if(c=='-')f=;
while(isdigit(c))x=x*+(c&),c=getchar();return f?x=-x:x;
}
const int N=+;
struct thxorz{
int u,v,w;
thxorz(int u=,int v=,int w=):u(u),v(v),w(w){}
inline bool operator <(const thxorz&A)const{return w<A.w;}
}e[N<<];
int n,tot;
struct stothx{int x,y,id;}A[N];
inline bool cmp1(stothx a,stothx b){return a.x<b.x;}
inline bool cmp2(stothx a,stothx b){return a.y<b.y;}
int anc[N];
ll ans;
inline int get_anc(int x){return anc[x]==x?x:anc[x]=get_anc(anc[x]);} int main(){//freopen("test.in","r",stdin);//freopen("test.ans","w",stdout);
read(n);
for(register int i=;i<=n;++i)read(A[i].x),read(A[i].y),A[i].id=i;
sort(A+,A+n+,cmp1);
for(register int i=;i<n;++i)e[++tot]=thxorz(A[i].id,A[i+].id,A[i+].x-A[i].x);
sort(A+,A+n+,cmp2);
for(register int i=;i<n;++i)e[++tot]=thxorz(A[i].id,A[i+].id,A[i+].y-A[i].y);
sort(e+,e+tot+);
for(register int i=;i<=n;++i)anc[i]=i;
for(register int i=;i<=tot;++i)if(get_anc(e[i].u)^get_anc(e[i].v))ans+=e[i].w,anc[anc[e[i].u]]=anc[e[i].v];
printf("%lld\n",ans);
return ;
}

最新文章

  1. git回滚错误提交
  2. php 判断是手机版还是电脑端
  3. UWP深入学习三:依赖属性、附加属性和数据绑定
  4. windows7安装phpnow Apache非管理员权限不能操作Windows NT服务的解决方法
  5. UCOS-2 消息邮箱与队列
  6. POJ 2349 Arctic Network (最小生成树)
  7. 角色控制器 Character Controller
  8. [CSS3]学习笔记-文字与字体相关样式
  9. 关于eclipse安装springide的记录
  10. DSAPI多功能组件编程应用-HTTP监听服务端与客户端
  11. Nginx常用的平滑重启
  12. top 命令
  13. C++学习(三十五)(C语言部分)之 单链表
  14. 数据库系统Informix为例,介绍改善用户查询计划的方法。
  15. php CURL 发送get,post请求
  16. 二分+最短路 UVALive - 4223
  17. 尝试笔记 01 之 CSS 边角上的标签
  18. 吴裕雄 python神经网络 水果图片识别(2)
  19. 【转】HttpRuntime的认识与加深理解
  20. RecyclerView分隔线定制

热门文章

  1. SpringBoot配置文件可存放位置和加载顺序
  2. 关于Oracle MAX()KEEP(DENSE_RANK LAST/FIRST ORDER BY ) 函数的使用分析
  3. PATB1040/A1093 有几个PAT
  4. T100——动态更改Label的说明
  5. vs 2013 设置website项目端口
  6. Stacey矩阵简介
  7. VUE生产环境打包build
  8. 几种常用的java 实现反转的方法———reverse
  9. C# 知识点笔记:IEnumerable&lt;&gt;的使用,利用反射动态调用方法
  10. Docker 容器数据卷(Data Volume)与数据管理