http://poj.org/problem?id=2031

题意就是给你n个球的(球心以及半径),然后求最小生成树就欧了,这里的关键部分是对于重复的球的路径长度的处理

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#define maxn 107
#define inf 999999999
using namespace std;
const double eps = 1e-6;
struct node
{double x,y,z,r;
}p[maxn];
double map[100][100],dis[maxn];
bool vt[maxn];
int n;
int cmp(double x)
{if (x > eps) return 1;else if (x < -eps) return -1;else return 0;
}
double getlens(int i,int j)
{double x = p[i].x - p[j].x;double y = p[i].y - p[j].y;double z = p[i].z - p[j].z;double d = (sqrt(x*x + y*y + z*z) - p[i].r - p[j].r);if (cmp(d) < 0) return 0;//如果有重复的出现,返回0else return d;
}
void prim()
{int i,j,k;double min;double ans = 0;for (i = 0; i < n; ++i){vt[i] = false;dis[i] = map[0][i];}vt[0] = true;for (k = 1; k < n; ++k){j = 0; min = inf;for (i = 1; i < n; ++i){if (!vt[i] && min > dis[i]){j = i; min = dis[i];}}vt[j] = true;ans += min;for (i = 1; i < n; ++i){if (!vt[i]){if (dis[i] > map[i][j])dis[i] = map[i][j];}}}printf("%.3lf\n",ans);
}
int main()
{int i,j;while (~scanf("%d",&n)){if (!n) break;for (i = 0; i < n; ++i)scanf("%lf%lf%lf%lf",&p[i].x,&p[i].y,&p[i].z,&p[i].r);for (i = 0; i < n; ++i){for (j = 0; j < n; ++j){map[i][j] = (i != j)*inf;}}/*for (i = 0; i < n; ++i){for (j = 0; j < n; ++j){printf("%.3lf ",map[i][j]);}printf("\n");}*/for (i = 0; i < n; ++i){for (j = i; j < n; ++j){map[i][j] = map[j][i] = getlens(i,j);}}prim();}return 0;
}

  

pku 2031 Building a Space Station 最小生成树+精度控制相关推荐

  1. POJ - 2031 Building a Space Station (最小生成树)

    题目链接:http://poj.org/problem?id=2031点击打开链接 Building a Space Station Time Limit: 1000MS   Memory Limit ...

  2. POJ 2031 Building a Space Station

    题目链接:http://poj.org/problem?id=2031 题目意思是给出三维坐标系上的一些球的球心坐标和其半径,搭建通路,使得他们能够相互连通.如果两个球有重叠的部分则算为已连通,无需再 ...

  3. zoj 1718 poj 2031 Building a Space Station

    最小生成树,用了Kruskal算法.POJ上C++能过,G++不能过... 算出每两个圆心之间的距离,如果距离小于两半径之和,那么这两个圆心之间的距离直接等于0,否则等于距离-R[i]-R[j]. # ...

  4. POJ_2031 Building a Space Station

    Building a Space Station 链接 POJ_2031 Building a Space Station Describe You are a member of the space ...

  5. poj2031 Building a Space Station

    题目链接:http://poj.org/problem?id=2031 题意:给你n个球,让你用最小的花费,把这n个球联通,如果两个球相交,就默认联通,否者连接这两个球的花费就是,球面之间的最短距离, ...

  6. I. Space Station(hash记忆化+dp)

    <文章>陆游 文章本天成,妙手偶得之. 粹然无疵瑕,岂复须人为. 君看古彝器,巧拙两无施. 汉最近先秦,固已殊淳漓. 胡部何为者,豪竹杂哀丝. 后夔不复作,千载谁与期? I. Space ...

  7. 【C++】C++格式化输出/输出格式控制/输出精度控制

    1. case 新增精度控制头文件 #include <iostream> #include <iomanip>//不要忘记包含此头文件 精度控制实例 std::cout &l ...

  8. 电气比例阀外接压力传感器和PID控制器实现微正压0.1%的超高精度控制

    摘要:本文针对工业和仪表行业对超高精度0.1%的微正压控制以及低成本要求,提出了有效的解决方案.整体方案基于电气比例阀,通过外接超高精度的压力传感器和PID控制器,在发挥电气比例阀优势的同时,可大幅提 ...

  9. 浮点类型的比较,精度控制(float.h的利用 ,DBL_EPSILON)

    在c语言中有很多数据类型,如int,char,float, double等,每个类型在使用时都要涉及到比较运算,我们都知道int这样的数据进行比较时常常用到"=="来判断是否相等, ...

最新文章

  1. Python标准库的强大功能的相关介绍
  2. WebService 基础
  3. 手写一个二级选择框联动
  4. 单例模式【SingletonPattern】
  5. emlog链接html,emlog如何做站内外链跳转优化教程
  6. c语言fun函数yx,C语言解24点游戏程序
  7. vsftpd安装配置_CentOS7配置vsftpd虚拟用户模式详解
  8. java system datetime_Java8新特性时间日期库DateTime API及示例
  9. error while loading shared libraries: libtinfo.so.5
  10. 韩顺平 php大牛班课程,2016 泰牛程序员 韩顺平 PHP 大牛班 javascript课程 完整笔记.doc...
  11. 【转】英语词汇学习渐进
  12. 浅谈千万级高性能高并发网站架构
  13. (回溯_04)组合总和
  14. 基于matlab的神经网络设计,神经网络模型matlab例子
  15. CK11,CK11N 成本估算数据读取
  16. 让古天乐心动的这位女星,鼻子塌却美得风华绝代
  17. 计算机专业能当体育老师吗,非师范类专业也能当老师的4个专业,录取率比其它专业还高...
  18. 简要讨论python对于1688的关键字搜索、商品详情在电商运营大数据分析、电商选品、竞品分析上的帮助
  19. MCK主机加固数据安全解决方案
  20. Java毕设项目OA办公系统

热门文章

  1. 在C#代码中应用Log4Net(一)简单使用Log4Net
  2. 速读《构建之法:现代软件工程》提问
  3. 远程计算机无法操作,Win10系统下qq远程不能控制对方电脑(点不动)的完全解决方法...
  4. Linux 操作系统原理 — 系统结构
  5. 5%精度的电阻值间的倍率,倍数
  6. NR 5G QoS模型
  7. 无服务器仍然离不开基础设施管理
  8. 联想超融合,打通智慧医疗的“症结”
  9. springMVC 注解 controller层的优化
  10. Codeforces 768E:Game of Stones