专题四--1002

题目

Problem Description

Eddy begins to like painting pictures recently ,he is sure of himself to become a painter.Every day Eddy draws pictures in his small room, and he usually puts out his newest pictures to let his friends appreciate. but the result it can be imagined, the friends are not interested in his picture.Eddy feels very puzzled,in order to change all friends ‘s view to his technical of painting pictures ,so Eddy creates a problem for the his friends of you.
Problem descriptions as follows: Given you some coordinates pionts on a drawing paper, every point links with the ink with the straight line, causes all points finally to link in the same place. How many distants does your duty discover the shortest length which the ink draws?

Input

The first line contains 0 < n <= 100, the number of point. For each point, a line follows; each following line contains two real numbers indicating the (x,y) coordinates of the point.

Input contains multiple test cases. Process to the end of file.

Output

Your program prints a single real number to two decimal places: the minimum total length of ink lines that can connect all the points.

Sample Input

3
1.0 1.0
2.0 2.0
2.0 4.0

Sample Output

3.41

题目大意

最小生成树的裸题,给你一些点的坐标,然后求连通这些点的最短的线段的长度。注意要将数据处理一下,先求出两个点之间的长度。

AC代码

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. #include<cmath>
  5. #include<vector>
  6. using namespace std;
  7. const int MAX=105;
  8. struct point {
  9. double x;
  10. double y;
  11. } po [MAX];
  12. struct link {
  13. int x;
  14. int y;
  15. double d;
  16. };
  17. int c[MAX];
  18. double dist(point a,point b)
  19. {
  20. return sqrt((a.x-b.x)*(a.x-b.x)+(a.y*b.y)*(a.y*b.y));
  21. }
  22. int find(int a)
  23. {
  24. while(c[a]!=a)
  25. a=c[a];
  26. return a;
  27. }
  28. void merg(int a,int b)
  29. {
  30. a=find(a);
  31. b=find(b);
  32. if(a!=b)
  33. c[a]=b;
  34. }
  35. bool cmp(link a,link b)
  36. {
  37. return a.d<b.d;
  38. }
  39. int main()
  40. {
  41. //freopen("date.in","r",stdin);
  42. //freopen("date.out","w",stdout);
  43. int n,x,y,i,j,res;
  44. link tem;
  45. vector<link> dis;
  46. while(scanf("%d",&n)) {
  47. res=0;
  48. dis.clear();
  49. for(i=1; i<=n; i++) {
  50. scanf("%lf%lf",&po[i].x,&po[i].y);
  51. for(j=i-1; j>=1; j--) {
  52. tem.x=i;
  53. tem.y=j;
  54. tem.d=dist(po[i],po[j]);
  55. dis.push_back(tem);
  56. }
  57. }
  58. vector<link>::iterator b=dis.begin();
  59. vector<link>::iterator e=dis.end();
  60. sort(b,e,cmp);
  61. for(; b!=e; b++) {
  62. if(find(b->x)!=find(b->y)) {
  63. res+=(b->d);
  64. merg(b->x,b->y);
  65. }
  66. }
  67. printf("%.2lf\n",res);
  68. }
  69. }

来自为知笔记(Wiz)

时间: 2024-12-20 15:48:37

专题四--1002的相关文章

[C# 网络编程系列]专题四:自定义Web浏览器

转自:http://www.cnblogs.com/zhili/archive/2012/08/24/WebBrowser.html 前言: 前一个专题介绍了自定义的Web服务器,然而向Web服务器发出请求的正是本专题要介绍的Web浏览器,本专题通过简单自定义一个Web浏览器来简单介绍浏览器的工作原理,以及帮助一些初学者揭开浏览器这层神秘的面纱(以前总感觉这些应用感觉很深奥的,没想到自己也可以自定义一个浏览器出来),下面不啰嗦了,进入正题. 一.Web浏览器的介绍 Web浏览器是指可以显示Web

UI标签库专题四:JEECG智能开发平台 Upload(上传标签)

?? 1. Upload(上传标签) 1.1.  参数 属性名 类型 描述 是否必须 默认值 id string 上传控件唯一标示 是 null name string 控件name 是 null formData string 上传文件提交后台的其他表单参数取ID 否 null uploader string 上传提交路径 是 null extend string 上传文件扩展名(可选类型组1,pic[*.jpg;*,jpeg;*.png;*.gif;*.bmp;*.ico;*.tif],2,

kuangbin专题四 : 最短路 I 题 Arbitrage

kuangbin专题四 : 最短路 I 题  Arbitrage POJ 2240 Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of a currency into more than one unit of the same currency. For example, suppose that 1 US Dollar buys 0.5 British pound,

kuangbin专题专题四 Til the Cows Come Home POJ - 2387

题目链接:https://vjudge.net/problem/POJ-2387 题意:从编号为n的城市到编号为1的城市的最短路. 思路:dijkstra模板题,直接套板子,代码中我会带点注释给初学者看. 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <cstdio> 5 #include <string> 6 using namespac

C++--第24课 - 专题四经典问题解析

第24课 - 专题四经典问题解析 1. 历史的痕迹 #include <cstdlib> #include <iostream> using namespace std; template<class T>  //以前是用typename定义,现在是用class定义 T Minus(T a, T b) { return a - b; } template<class T>  //类模板 class Add { public: T add(T a, T b)

专题四:自定义Web浏览器

前言: 前一个专题介绍了自定义的Web服务器,然而向Web服务器发出请求的正是本专题要介绍的Web浏览器,本专题通过简单自定义一个Web浏览器来简单介绍浏览器的工作原理,以及帮助一些初学者揭开浏览器这层神秘的面纱(以前总感觉这些应用感觉很深奥的,没想到自己也可以自定义一个浏览器出来),下面不啰嗦了,进入正题. 一.Web浏览器的介绍 Web浏览器是指可以显示Web服务器或者本地文件系统中的Html文件内容,并让用户与这些文件交互的一种软件,它是网络服务的客户端浏览程序,可向Web服务器发送请求,

[C# 基础知识系列]专题四:事件揭秘

转自http://www.cnblogs.com/zhili/archive/2012/10/27/Event.html 引言: 前面几个专题对委托进行了详细的介绍的,然后我们在编写代码过程中经常会听到“事件”这个概念的,尤其是写UI的时候,当我们点击一个按钮后VS就会自动帮我们生成一些后台的代码,然后我们就只需要在Click方法里面写代码就可以,所以可能有些刚接触C#的朋友就觉得这样很理所当然的,也没有去思考这是为什么的,为什么点击下事件就会触发我们在Click方法里面写的代码呢?事件到底扮演

(专题四)02 图形的辅助说明

图形标注 title函数的用法 定义横纵坐标 绘制图形,添加标题 显示两行标题 在图形标题中使用LaTeX格式控制符 xlable函数和ylable函数 其中\pi输出希腊字母pi, \leq输出小于等于符号 text函数,x,y用于输出文本出现的位置,说明文本的定义与tittle文本的定义一样 gtext函数 对应的标注效果为左箭头 legend函数 定义横坐标,plot函数是一个有三个行向量构成的矩阵,legend函数为绘制的图形添加图例 坐标控制 axis函数 例如将横坐标的范围设置为-Π

[专题四] 并查集

集合专题 初始化parent集合 const int N = 100; int parent[N], rank[N]; for(int i = 0; i < N; i++) { parent[i] = i; rank[i] = 0; // 为路径压缩做准备 } 寻找祖先结点 int find(int parent[], int x) { if(parent[x] != x) x = parent[x]; find(parent, x); return x; // 不管祖先是不是自己 都是返回的x