poj 2031
来源:互联网 发布:二十四节气小雪知乎 编辑:程序博客网 时间:2024/05/16 15:25
#include<cmath>#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>using namespace std;const int maxn=100010,maxm=500;double inf=999999999.000;struct node{double x,y,z,r;}a[maxn];double e[maxm][maxm];double dis[maxn];int p[maxn];int main(){int i,j,k,n,m,end;double sum;while(1){scanf("%d",&m);sum=0.000;if(m==0)break;memset(p,0,sizeof(p));for(i=1;i<=m;i++)for(j=1;j<=m;j++)if(i==j)e[i][j]=0;else e[i][j]=inf;for(i=1;i<=m;i++)scanf("%lf%lf%lf%lf",&a[i].x,&a[i].y,&a[i].z,&a[i].r);for(i=1;i<m;i++)for(j=i+1;j<=m;j++){e[i][j]=e[j][i]=sqrt(sqrt((a[j].x-a[i].x)*(a[j].x-a[i].x)+(a[j].y-a[i].y)*(a[j].y-a[i].y))*sqrt((a[j].x-a[i].x)*(a[j].x-a[i].x)+(a[j].y-a[i].y)*(a[j].y-a[i].y))+(a[j].z-a[i].z)*(a[j].z-a[i].z))-a[i].r-a[j].r>0?sqrt(sqrt((a[j].x-a[i].x)*(a[j].x-a[i].x)+(a[j].y-a[i].y)*(a[j].y-a[i].y))*sqrt((a[j].x-a[i].x)*(a[j].x-a[i].x)+(a[j].y-a[i].y)*(a[j].y-a[i].y))+(a[j].z-a[i].z)*(a[j].z-a[i].z))-a[i].r-a[j].r:0; }int cnt=1;for(i=1;i<=m;i++)dis[i]=e[1][i];p[1]=1;while(cnt<m){double min=inf;for(i=1;i<=m;i++){if(!p[i]&&dis[i]<min){min=dis[i];end=i;}}cnt++;p[end]=1;sum+=dis[end];for(j=1;j<=m;j++){if(!p[j]&&dis[j]>e[end][j])dis[j]=e[end][j];}}printf("%.3f\n",sum);}return 0;}
0 0
- poj 2031
- poj 2031
- poj 2031
- POJ 2031
- poj 2031
- poj 2031
- POJ 2031
- POJ 2031
- POJ 2031
- poj 2031 Kruskal
- POJ 2031 prim
- poj 2031(prim)
- POJ
- poj
- POJ
- POJ
- poj
- poj
- 【总结】行胜于言——年终总结(2016年8月31日)
- 数据库复习1
- <LeetCode OJ> 389. Find the Difference
- new group contact
- -Android开发各种小功能大全(第一版)
- poj 2031
- 微信公众号开发---基本框架配置
- [Enthought Traning] Scientific Computing in Python
- Android编译过程详解(一)
- RMQ ST 算法模板
- NYOJ一笔画
- 音乐播放器app(二)—主页面的分析与制作
- Arduino 002 --- 在Ubuntu(Linux) 中搭建Arduino开发环境
- 年终总结