题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1162

题意:

  最小生成树

View Code

  1 #include<iostream>
  2 #include<algorithm>
  3 #include<cmath>
  4 using namespace std;
  5
  6 const int maxn = 100+10;
  7 int far[maxn];
  8 int n, m;
  9 int k;
 10 struct Edge
 11 {
 12     const bool operator<(Edge &n)const
 13     {
 14         return value<n.value;
 15     }
 16     int start;
 17     int end;
 18     double value;
 19 }edge[maxn*maxn];
 20
 21 bool cmp(struct Edge &a, struct Edge &b)
 22 {
 23     return a.value<b.value;
 24 }
 25
 26 void init()
 27 {
 28     int i, j;
 29     for(i=0; i<=n; i++)
 30         far[i] = i;
 31 }
 32
 33 int find(int a)
 34 {
 35     if(far[a]!=a)
 36         far[a] = find(far[a]);
 37     return far[a];
 38 }
 39
 40 void Union(int a, int b)
 41 {
 42     a = find(a);
 43     b = find(b);
 44     if(a != b)
 45         far[a] = b;
 46 }
 47
 48 double kruskal()
 49 {
 50     init();
 51     sort(edge,edge+n*(n-1)+1,cmp);
 52     double sum = 0;
 53     int count = 0;
 54     for(int i=1; i<=n*(n-1) && count<n; i++)
 55     {
 56         int a=edge[i].start;
 57         int b=edge[i].end;
 58         if(find(a)!=find(b))
 59         {
 60             Union(a, b);
 61             sum+=edge[i].value;
 62             count++;
 63         }
 64     }
 65     return sum;
 66 }
 67
 68 int main()
 69 {
 70     double a[maxn], b[maxn];
 71     while(cin>>n)
 72     {
 73         //m = n*(n-1)/2;
 74
 75         for(int i=1; i<=n; i++)
 76         {
 77             scanf("%lf%lf",&a[i], &b[i]);  //因为是无向图,所以要两次赋值
 78         }
 79         k=1;
 80         double c;
 81         for(int i=1; i<n; i++)
 82         {
 83             for(int j=i+1; j<=n; j++)
 84             {
 85                 //if(i != j)
 86                 //{ 87                     c = sqrt((a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]));
 88                     edge[k].start = i;
 89                     edge[k].end = j;
 90                     edge[k++].value = c;
 91                     edge[k].start = j;
 92                     edge[k].end = i;
 93                     edge[k++].value = c;
 94                 //}
 95             }
 96         }
 97         printf("%.2lf\n", kruskal());
 98     }
 99     return 0;
100 }

转载于:https://www.cnblogs.com/ruihua852/archive/2012/09/06/2673008.html

HDU-1162-Eddy's picture相关推荐

  1. HDU 1162 Eddy's picture (最小生成树)(java版)

    Eddy's picture 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 --每天在线,欢迎留言谈论. 题目大意: 给你N个点,求把这N个点 ...

  2. HDU ACM 1162 Eddy's picture

    http://acm.hdu.edu.cn/showproblem.php?pid=1162 输入一个整数n,表示点的个数. 接下来n行,每行有两个浮点数表示点的x坐标y坐标. 构造一棵最小生成树. ...

  3. HDU - 2204 Eddy‘s爱好(尚未完全解决)

    HDU - 2204 Eddy's爱好 题意: 给你一个正整数N,确定在1到N之间有多少个可以表示成M^K(K>1)的数 题解: 参考题解: 我们先举例找找规律 1~10以内2的次方有多少个?有 ...

  4. hdu 1210 Eddy's 洗牌问题

    hdu 1210 Eddy's 洗牌问题 Problem DescriptionEddy是个ACMer,他不仅喜欢做ACM题,而且对于纸牌也有一定的研究,他在无聊时研究发现,如果他有2N张牌,编号为1 ...

  5. hdu 2204 Eddy's爱好

    求$[1,n]$种有多少正整数可以表示为$p^q$的形式,其中$p,q$为正整数,且$q \ge 2$ $1 \le n \le 10^{18}$ 1. 若$p^q \le n$,则$\forall ...

  6. (kruskal算法复习+模板)Eddy's picture

    题目: Eddy begins to like painting pictures recently ,he is sure of himself to become a painter.Every ...

  7. HDU 2204 Eddy's爱好(容斥原理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2204 解题报告:输入一个n让你求出[1,n]范围内有多少个数可以表示成形如m^k的样子. 不详细说了, ...

  8. hdu 1161 Eddy's mistakes

    http://acm.hdu.edu.cn/showproblem.php?pid=1161 本题主要运用的就是大小写的转换: 我写的代码: #include<iostream> #inc ...

  9. Hdu - 1210 - Eddy's 洗牌问题

    因为考试所以最近都没有做什么题.想不到这题都卡(~~~~(>_<)~~~~ ),看来太久没有做题感觉变迟钝了,当然也有原因是找规律的题做得比较少,所以就这样了,看来要快快调整好,好好努力才 ...

  10. hdu 1828 pku 1177 Picture

    这困扰我N久的题目,终于过了. 求N个矩形的周长并,一开始觉得太遥不可及了,感觉好复杂 ,总想先搞懂计算的方法,再看大牛的方法,可是N久之后,对那个方法还是一知半解: 今天结合了代码还有下面俩副图之后 ...

最新文章

  1. kd树的根节点_kd树总结
  2. javascript的性能优化tips
  3. mysql函数时分秒转换_mysql函数 秒转换成时分秒
  4. ZooKeeper入门(三)zookeeper的Watcher机制
  5. access denied for_abm怎么样?ACCESS集团携8大国际品牌在进博会首秀,展示abmr 硬核实力!...
  6. QT每日一练day10:设计一个登陆界面
  7. linux dhcp rpm 安装
  8. 《只管去做》-如何做靠谱的年度计划
  9. C++中函数指针数组的使用
  10. [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配...
  11. unix系统发展史3
  12. Linux下wps文档结构图,如何在Word中设置文档结构图
  13. IDEA若依框架新建模块
  14. [Swift]LeetCode882. 细分图中的可到达结点 | Reachable Nodes In Subdivided Graph
  15. 使用递归判断字符串是否回文
  16. PHP - 垃圾回收机制收集
  17. 针对目前windows系统的所有勒索病毒补丁和安全工具
  18. ubuntu20.04 ros 采集velodyne激光雷达数据
  19. 串口、COM口、UART口, TTL、RS-232、RS-485的区别
  20. 云服务器可以用来做什么?

热门文章

  1. 按需生产 ,我们准备好了吗?
  2. CentOS7攻克日记(三) —— 安装Python3.6
  3. cv2.matchTemplate()函数的应用,匹配图片后画出矩形
  4. java-静态变量,单例模式
  5. oracle 多条执行语句同时执行
  6. 合理消费你的86400秒
  7. [名词解释] RIAD磁盘阵列
  8. 抽象类的作用之一:sdk 传递你需要的参数
  9. Service IntentService区别 (面试)
  10. Dagger2的使用