poj2349Arctic Network
题目链接:http://poj.org/problem?id=2349
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<cmath> 5 using namespace std; 6 const int maxn=550; 7 int n,m; 8 int f[maxn]; 9 double ans[maxn]; 10 struct node 11 { 12 int x,y; 13 }p[maxn]; 14 struct edge 15 { 16 int u,v; 17 double w; 18 bool operator<(const edge& a) 19 { 20 return w<a.w; 21 } 22 }e[maxn*maxn]; 23 24 void init() 25 { 26 for(int i=0;i<=n;i++) 27 f[i]=i; 28 } 29 30 int gf(int x) 31 { 32 return x==f[x]?x:f[x]=gf(f[x]); 33 } 34 35 void uni(int a,int b) 36 { 37 int pa=gf(a); 38 int pb=gf(b); 39 f[pb]=pa; 40 } 41 double getdis(int i,int j) 42 { 43 double dx=p[i].x-p[j].x; 44 double dy=p[i].y-p[j].y; 45 return sqrt(dx*dx+dy*dy); 46 } 47 48 int main() 49 { 50 int t; 51 scanf("%d",&t); 52 while(t--) 53 { 54 scanf("%d%d",&m,&n); 55 init(); 56 for(int i=0;i<n;i++) 57 scanf("%d%d",&p[i].x,&p[i].y); 58 int cnt=0,cas=0; 59 for(int i=0;i<n;i++) 60 for(int j=i+1;j<n;j++) 61 { 62 e[cnt].u=i; 63 e[cnt].v=j; 64 e[cnt].w=getdis(i,j); 65 cnt++; 66 } 67 if(m>=n) {printf("0.00\n");continue;} 68 sort(e,e+cnt); 69 for(int i=0;i<cnt;i++) 70 { 71 int v=e[i].v; 72 int u=e[i].u; 73 if(gf(u)!=gf(v)) 74 { 75 uni(u,v); 76 cas++; 77 ans[cas]=e[i].w; 78 if(cas==n-1) break; 79 } 80 } 81 printf("%.2f\n",ans[n-m]); 82 83 84 } 85 }
分类:
最小生成树
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥