HDU 1162Eddy's picture(MST问题)
Eddy's picture
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 11841 Accepted Submission(s): 5922
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
Author
eddy
Recommend
JGShining | We have carefully selected several similar problems for you: 1217 1875 1879 1863 1325
分析:
最小生成树问题(采用克鲁斯卡尔算法)
不过边还需要自己求(两点间的距离公式,点的组合)
code:
- #include<bits/stdc++.h>
- using namespace std;
- #define max_v 105
- struct edge
- {
- int x,y;
- double w;
- };
- edge e[max_v*max_v];
- int pa[max_v],rk[max_v];
- double sum=0.0;
- bool cmp(edge a,edge b)
- {
- return a.w<b.w;
- }
- void make_set(int x)
- {
- pa[x]=x;
- rk[x]=;
- }
- int find_set(int x)
- {
- if(x!=pa[x])
- pa[x]=find_set(pa[x]);
- return pa[x];
- }
- void union_set(int x,int y,double w)
- {
- x=find_set(x);
- y=find_set(y);
- if(x==y)
- return ;
- if(rk[x]>rk[y])
- pa[y]=x;
- else
- {
- if(rk[x]==rk[y])
- rk[y]++;
- pa[x]=y;
- }
- sum+=w;
- return ;
- }
- double f(double x1,double y1,double x2,double y2)
- {
- return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
- }
- int main()
- {
- int n;
- while(~scanf("%d",&n))
- {
- sum=;
- double a[max_v],b[max_v];
- for(int i=; i<n; i++)
- {
- make_set(i);
- scanf("%lf %lf",&a[i],&b[i]);
- }
- int k=;
- for(int i=; i<n; i++)
- {
- for(int j=i+; j<n; j++)
- {
- e[k].x=i;
- e[k].y=j;
- e[k++].w=f(a[i],b[i],a[j],b[j]);
- }
- }
- sort(e,e+k,cmp);
- for(int i=; i<k; i++)
- {
- union_set(e[i].x,e[i].y,e[i].w);
- }
- printf("%0.2lf\n",sum);
- }
- return ;
- }
HDU 1162Eddy's picture(MST问题)的更多相关文章
- 【HDU 1828】 Picture (矩阵周长并,线段树,扫描法)
[题目] Picture Problem Description A number of rectangular posters, photographs and other pictures of ...
- hdu Eddy's picture (最小生成树)
Eddy's picture Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Tota ...
- HDU 5627 Clarke and MST &意义下最大生成树 贪心
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5627 题意:Bestcoder的一道题,让你求&意义下的最大生成树. 解法: 贪心,我们从高位 ...
- hdu 1679 The Unique MST (克鲁斯卡尔)
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 24152 Accepted: 8587 D ...
- 【49.23%】【hdu 1828】Picture
Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- hdu 1863 - 畅通工程(MST)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 5627 Clarke and MST(最大 生成树)
Problem Description Clarke is a patient with multiple personality disorder. One day he turned into a ...
- HDU - 4786 Fibonacci Tree (MST)
题意:给一张由白边和黑边构成的无向图,求是否存在一个生成树,使白边的数量为一个斐波那契数. 分析:白边权值为1,黑边权值为0.求出该图的最小生成树和最大生成树,若这两个值之间存在斐波那契数,则可以,若 ...
- HDU 1828:Picture(扫描线+线段树 矩形周长并)
题目链接 题意 给出n个矩形,求周长并. 思路 学了区间并,比较容易想到周长并. 我是对x方向和y方向分别做两次扫描线.应该记录一个pre变量,记录上一次扫描的时候的长度,对于每次遇到扫描线统计答案的 ...
随机推荐
- 洛谷P2792 [JSOI2008]小店购物(最小树形图)
题意 题目链接 Sol 一开始的思路:新建一个虚点向每个点连边,再加上题面中给出的边,边权均为大小*需要购买的数量 然后发现死活都过不去 看了题解才发现题目中有个细节--买了\(A\)就可以买\(B\ ...
- 【js编程艺术】 之有用的函数
学习js的过程中有几个有用的函数. //添加事件函数 function addLoadEvent(func) { var oldonload = window.onload; if(typeof wi ...
- Servlet - Reasource loading
1. Load db3.properties String path = this.getServletContext().getRealPath("/WEB-INF/classes/db/ ...
- .NET AOP微型框架发布 --CleanAOP
CleanAOP--简介 作者:立地(欧文) 邮箱:jarvin_g@126.com 导语: AOP为Aspect Oriented Programming的缩写. 意为:面向切面编程.将日志记录,性 ...
- jquery-animate()动画
一.animate()语法 $(“选择器”).animate({CSS样式},时间,运动方式,回调函数); 参数说明: 参数1:CSS属性名,属性值,JSON格式{"属性名":&q ...
- Redis Windows环境启动
1.找到redis安装目录 2.cmd 目录 3.输入redis-server.exe redis.windows.conf 启动成功
- fiddler抓包出现Tunnel to
在抓包的时候,有时候会遇到很多的tunnel to,图标是一把锁的形状,如下图: connect是为了建立http tunnel,connect是http众多方法中的其中一种,它跟post.get.p ...
- leetcode Ch3-DFS & Backtracking II
一.Gray Code class Solution { public: vector<int> grayCode(int n) { vector<}; ) return resul ...
- 第六次作业——Excel制作工资表
- Java 多态(接口)
有两种意义的多态,一是操作名称的多态,即有多个操作具有相同的名字,但这些操作所接收的消息类型必须不同(方法重载).另一种多态是和继承有关的多态,是指同一个操作被不同类型对象调用时可能产生不同的行为(方 ...