POJ2031(最小生成树)
来源:互联网 发布:ubuntu 16.04输入法 编辑:程序博客网 时间:2024/05/16 00:52
题目大意:给你n个球的坐标以及半径大小,求MST。如果两球相切或相交,那么间距为0;如果两球相离,那么间距为球心距减去半径。
#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<iostream>#include<string>using namespace std;const int maxn=111111;double x[111],y[111],z[111],r[111];int fa[111];int n,k;struct node{ int u,v; double w; bool operator<(const node &a)const { return w<a.w; }}p[maxn];int find_fa(int x){ return (fa[x]==x)?fa[x]:fa[x]=find_fa(fa[x]);}double get_dis(double x1,double y1,double z1,double x2,double y2,double z2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));}double kruskal(){ double ans=0; int cnt=0; sort(p,p+k); for(int i=0;i<k;i++) { int fx=find_fa(p[i].u); int fy=find_fa(p[i].v); if(fx!=fy) { fa[fx]=fy; ans+=p[i].w; cnt++; } if(cnt==n-1) break; } return ans;}int main(){ while(scanf("%d",&n)&&n) { for(int i=0;i<n;i++) { scanf("%lf%lf%lf%lf",&x[i],&y[i],&z[i],&r[i]); fa[i]=i; } k=0; double dist; for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { dist=get_dis(x[i],y[i],z[i],x[j],y[j],z[j])-r[i]-r[j]; if(dist<0) dist=0; p[k].u=i; p[k].v=j; p[k++].w=dist; } } double res=kruskal(); printf("%.3f\n",res); } return 0;}
0 0
- poj2031(最小生成树)
- poj2031(最小生成树)
- POJ2031(最小生成树)
- poj2031 最小生成树
- poj2031 最小生成树
- POJ2031 最小生成树
- 最小生成树之poj2031
- <模板>poj2031 Building a Space Station(最小生成树)
- POJ2031 Building a Space Station(最小生成树,prim)
- poj2031最小生成树(建图)(注意c++与g++的区别)
- poj2031-Building a Space Station(最小生成树,kruskal,prime)
- POJ2031--Building a Space Station--最小生成树
- poj2031 Building a Space Station 最小生成树,kruskal
- POJ2031-Building a Space Station -最小生成树
- poj2031 Building a Space Station 三维空间的最小生成树
- POJ2031,Building a Space Station,最小生成树模版题
- 【POJ2031】【最小生成树】【g++ f c++ lf】
- poj2031 Building a Space Station(最小生成树)
- 冒泡排序&第一次在CSDN上写博客
- 多线程
- 递归方法实现逆序
- activity生命周期--onFreeze详解
- linux下自己安装软件添加快捷方式
- POJ2031(最小生成树)
- 使用 python脚本获取函数调用关系
- Qt 注册表
- Python3 实现网站后台弱口令爆破(多线程)
- android shape的使用
- 最全Pycharm教程(4)——有关Python解释器的相关配置
- Calculus on Computational Graphs: Backpropagation
- 天声人語 20151201 水木しげるさん冥界へ
- Long.ValueOf(“String”) Long.parseLong(“String”) 区别