POJ 2560 Freckles
来源:互联网 发布:微信加好友软件靠谱吗 编辑:程序博客网 时间:2024/06/06 13:19
数据太水了,所以用暴力求的距离。
//// main.cpp// Richard//// Created by 邵金杰 on 16/7/24.// Copyright © 2016年 邵金杰. All rights reserved.//#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;const int maxn=100+10;struct node{ float x,y;}node[maxn];struct edge{ int u,v; float w; bool operator < (struct edge p)const{ return w<p.w; }}edge[maxn*maxn];int pa[maxn*maxn];int getroot(int a) {return pa[a]==a?a:pa[a]=getroot(pa[a]);}float dis(int i,int j){ float x1,y1,x2,y2; x1=node[i].x,y1=node[i].y; x2=node[j].x,y2=node[j].y; return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}int main(){ int n,cnt=0; float ans=0; scanf("%d",&n); for(int i=1;i<=n;i++) pa[i]=i; for(int i=0;i<n;i++) scanf("%f%f",&node[i].x,&node[i].y); for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { edge[cnt].u=i; edge[cnt].v=j; edge[cnt].w=dis(i,j); cnt++; } } sort(edge,edge+cnt); for(int i=0;i<cnt;i++) { int root1,root2; root1=getroot(edge[i].u); root2=getroot(edge[i].v); if(root1==root2) continue; pa[root2]=root1; ans+=edge[i].w; } printf("%.2f\n",ans); return 0;}
0 0
- Poj 2560 Freckles
- poj 2560 Freckles
- POJ 2560 Freckles
- POJ 2560 Freckles
- POJ-2560 Freckles
- POJ 2560 Freckles
- poj 2560 Freckles
- POJ 2560 Freckles
- POJ 2560 Freckles
- POJ 2560 Freckles
- poj 2560 Freckles
- poj 2560 Freckles
- poj 2560 Freckles
- poj 2560Freckles (krusual)
- poj 2560 uva 10034 - Freckles
- POJ-2560-Freckles 解题报告
- POJ 2560 Freckles 最小生成树
- POJ 2560 Freckles
- 高级c++头文件bits/stdc++.h
- kernel 源码中的 likely() 和 unlikely()
- thinkphp中create()方法实现简单的用户注册表单验证功能
- 图片占满布局 Android
- 挑战2.3 记录结果再利用的“动态规划”
- POJ 2560 Freckles
- hdu 5747 Aaronson【贪心】
- 链式编程初体验
- java中的位运算符
- poj 2229 (dp 完全背包相似问题)
- 初探MW302
- Sharding
- Linux进程通信(二)IPC消息队列
- linux文件系统