Eddy's picture(并查集+最小生成树)
来源:互联网 发布:东村明子 知乎 编辑:程序博客网 时间:2024/05/01 01:51
Link:http://acm.hdu.edu.cn/showproblem.php?pid=1162
Problem:
Eddy's picture
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7068 Accepted Submission(s): 3575
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 contains multiple test cases. Process to the end of file.
31.0 1.02.0 2.02.0 4.0
3.41
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int n,m,pre[500];
double ans;
struct edge{
int u;
int v;
double w;
}e[5000];
struct node{
double x;
double y;
}point[111];
bool cmp(edge a,edge b)
{
return a.w<b.w;
}
void init()
{
for(int i=0;i<n;i++)
pre[i]=i;
}
int fin(int root)
{
int son,tmp;
son=root;
while(root!=pre[root])
{
root=pre[root];
}
while(son!=root)
{
tmp=pre[son];
pre[son]=root;
son=tmp;
}
return root;
}
bool join(int root1,int root2)
{
int x;
int y;
x=fin(root1);
y=fin(root2);
if(x!=y)
{
pre[x]=y;
return true;
}
return false;
}
void kluscal(int n,int m)
{
sort(e+1,e+m+1,cmp);
ans=0;
for(int i=1;i<=m;i++)
{
if(join(e[i].u,e[i].v))
ans+=e[i].w;
}
}
double dis(double x1,double y1,double x2,double y2)
{
double d;
d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
return d;
}
int main()
{
int i,j,cnt;
while(scanf("%d",&n)==1)
{
for(i=1;i<=n;i++)
{
scanf("%lf%lf",&point[i].x,&point[i].y);
}
cnt=0;
for(i=2;i<=n;i++)
{
for(j=1;j<i;j++)
{
cnt++;
e[cnt].u=j;
e[cnt].v=i;
e[cnt].w=dis(point[i].x,point[i].y,point[j].x,point[j].y);
}
}
init();
kluscal(n,cnt);
printf("%.2lf\n",ans);
}
return 0;
}
- Eddy's picture(并查集+最小生成树)
- hdu1162 Eddy's picture 并查集+最小生成树
- hdu1162(并查集+Kruskal最小生成树)-- Eddy's picture
- Eddy's picture(最小生成树)
- HDU1162 Eddy's picture 最小生成树
- HDOJ Eddy's picture(kruskal+并查集)
- HDOJ 1162 Eddy's picture(最小生成树 - kruskal)
- hdu 1162 Eddy's picture(最小生成树)
- hdu 1162 Eddy's picture(基础最小生成树)
- HDOJ 题目1162 Eddy's picture(最小生成树)
- HDU 1162 Eddy's picture(图论-最小生成树)
- 杭电1162Eddy's picture(最小生成树)
- HDU-1162 Eddy's picture(最小生成树[Kruskal])
- HDU 1162 Eddy's picture(最小生成树-Prim)
- HDU 1162 Eddy's picture (最小生成树)
- hdu 1162 Eddy's picture(最小生成树,prim)
- HDU 1162 Eddy's picture (最小生成树)
- HDOJ 1162 Eddy's picture(最小生成树)
- AWR , DBMS_WORKLOAD_REPOSITORY,手工修改历史快照信息
- sqlmap使用总结
- 将应用部署到jboss,java.lang.OutOfMemoryError: PermGen space解决方法
- (转)livecd 修复Grub
- (转)乌班图12.04超级用户登录
- Eddy's picture(并查集+最小生成树)
- (原)双核四线程
- (原)super.paintComponent解析
- sed行编辑器使用介绍
- (原)GridBagLayout
- (转)去掉QTreeWidget中节点之间的虚线
- hibernate使用@where实现条件过滤功能
- (转)C++延时效果
- (原)关于指针的一些个人想法