poj 2031 Building a Space Station
来源:互联网 发布:淘宝达人自媒体 编辑:程序博客网 时间:2024/05/01 23:00
简单最小生成树 注意建图
#include <iostream>#include <cstring>#include <cmath>#define inf 100000000#define eps 1e-8using namespace std;int n;double map[150][150],lowc[150];bool vis[150];struct node{double x,y,z,r;}cell[150];double dis(node a,node b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z));}double prim(){int i,j,p;double minc,res=0;memset(vis,0,sizeof(vis));vis[0]=1;for(i=1;i<n;i++)lowc[i]=map[0][i];for(i=1;i<n;i++){minc=inf;p=-1;for(j=0;j<n;j++)if(vis[j]==0 && minc>lowc[j]){minc=lowc[j];p=j;}if(inf==minc)return -1;res+=minc;vis[p]=1;for(j=0;j<n;j++)if(vis[j]==0 && lowc[j]>map[p][j])lowc[j]=map[p][j];}return res;}int main(){int i,j;double d;while(scanf("%d",&n)!=EOF && n){for(i=0;i<n;i++)scanf("%lf%lf%lf%lf",&cell[i].x,&cell[i].y,&cell[i].z,&cell[i].r);for(i=0;i<n;i++)for(j=0;j<n;j++){d=dis(cell[i],cell[j]);if(d-cell[i].r-cell[j].r>eps)map[i][j]=d-cell[i].r-cell[j].r;elsemap[i][j]=0;}printf("%.3lf/n",prim());}return 0;}
- 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 Building a Space Station MST
- 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
- POJ:2031 Building a Space Station
- 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
- 请求帮助
- 查看mysql端口命令
- oracle 回滚段管理
- 表空间修改常用SQL代码示例
- 20个开源项目托管站点推荐
- poj 2031 Building a Space Station
- 竞聘项目长
- C语言实现二进制文件读写
- Linux Find 命令精通指南 --未完待续
- poj 2253 Frogger
- 一个很搞笑的测试
- 连接ftp站点下载加密样本
- 上传执行脚本
- SQL的内连接与外连接