Kruskal算法解决HDU 1162
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1162
题目大意我就不说了,很容易看明白。
直接上代码吧,还是,只要你会Kruskal,这个题目没有什么难度。

#include<iostream> #include<algorithm> #include<cmath> #include<string> #include<cstring> using namespace std; int father[10005], Enums, Count; double MinL; struct Point{ int begin; int end; double Dis; }P[10005]; int Find(int k){ return father[k]==k?k:father[k]=Find(father[k]); } int Cmp(Point a, Point b){ return a.Dis<b.Dis; } double Kruskal(){ for(int i=0; i<Count; i++){ father[i] = i; } for(int i=0; i<Count; i++){ int a = Find(P[i].begin); int b = Find(P[i].end); if(a!=b){ father[b] = a; MinL += P[i].Dis; } } return MinL; } void Init(){ int N; double x[100], y[100]; while(cin>>N){ for(int i=0; i<N; i++){ cin>>x[i]>>y[i]; } MinL = 0.0; Count=0; for(int i=0; i<N; i++){ for(int j=i+1; j<N; j++){ P[Count].begin = i; P[Count].end = j; P[Count].Dis = sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); Count++; } } sort(P, P+Count, Cmp); printf("%.2lf\n", Kruskal()); } } int main(){ Init(); }
posted on 2012-04-24 20:59 More study needed. 阅读(221) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架