poj 2031 Building a Space Station(prime )
2013-11-05 20:46
155 查看
这个题要交c++, 因为prime的返回值错了,改了一会
题目:http://poj.org/problem?id=2031
题意:就是给出三维坐标系上的一些球的球心坐标和其半径,搭建通路,使得他们能够相互连通。如果两个球有重叠的部分则算为已连通,无需再搭桥。求搭建通路的最小费用(费用就是边权,就是两个球面之间的距离
思路:求球之间的距离, 距离小于半径 说明联通 , 距离为0.
题目:http://poj.org/problem?id=2031
题意:就是给出三维坐标系上的一些球的球心坐标和其半径,搭建通路,使得他们能够相互连通。如果两个球有重叠的部分则算为已连通,无需再搭桥。求搭建通路的最小费用(费用就是边权,就是两个球面之间的距离
思路:求球之间的距离, 距离小于半径 说明联通 , 距离为0.
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; double const INF=1<<29; double G[110][110]; struct node { double x,y,z,r; }p[110]; double prime(int n) { double sum=0.0; int i,j,pos; int v[110]={0}; double d[110],min; for(i=1; i<=n; i++) d[i]=G[1][i]; v[1]=1; for(i=2; i<=n; i++) { min=INF; for(j=1; j<=n; j++) { if(!v[j]&&min>d[j]) { min=d[j]; pos=j; } } sum+=min; v[pos]=1; //printf("%.3lf %.3lf\n",min,sum); for(j=1; j<=n; j++) { if(!v[j]) { if(d[j]>G[pos][j]) d[j]=G[pos][j]; } } //printf("%.3lf %.3lf\n",min,sum); } //printf("%.3lf\n",sum); return sum; } int main() { int n,i,j; double d,sum; while(scanf("%d",&n)&&n) { memset(p,0,sizeof(p)); for(i=1; i<=n; i++) { for(j=1; j<=n; j++) G[i][j]=INF; G[i][i]=0; } for(i=1; i<=n; i++) { scanf("%lf%lf%lf%lf",&p[i].x,&p[i].y,&p[i].z,&p[i].r); for(j=1; j<i; j++) { d=sqrt((p[i].x-p[j].x)*(p[i].x-p[j].x)+(p[i].y-p[j].y)*(p[i].y-p[j].y) +(p[i].z-p[j].z)*(p[i].z-p[j].z)); if(d-p[i].r-p[j].r<=0) G[i][j]=G[j][i]=0; else G[i][j]=G[j][i]=d-p[i].r-p[j].r; } } sum=prime(n); printf("%.3lf\n",sum); } return 0; }
相关文章推荐
- poj 2031 Building a Space Station【最小生成树prime】【模板题】
- POJ 2031 Building a Space Station(最小生成树--prime)
- poj 2031 Building a Space Station 【最小生成树 prime】
- poj--2031--Building a Space Station(prime)
- poj--2031--Building a Space Station(prime)
- poj 2031 Building a Space Station
- POJ-2031-Building a Space Station
- poj-2031--Building a Space Station
- POJ 2031 Building a Space Station
- poj——2031——Building a Space Station
- POJ-2031(Building a Space Station) Kruskal
- Building a Space Station(POJ--2031【最小生成树】
- POJ - 2031 Building a Space Station prim
- POJ 2031-Building a Space Station(最小生成树)
- POJ-2031 Building a Space Station(最小生成树 prim算法)
- POJ 2031 Building a Space Station
- poj 2031 Building a Space Station
- POJ 2031 ——Building a Space Station 最小生成树
- POJ 2031 && ZOJ 1718--Building a Space Station【最小生成树 && kurskal && 水题】
- poj 2031 Building a Space Station