POJ 2031 Building a Space Station 最小生成树模板
题目大意:在三维坐标中给出n个细胞的x,y,z坐标和半径r。如果两个点相交或相切则不用修路,否则修一条路连接两个细胞的表面,求最小生成树。
题目思路:最小生成树树模板过了,没啥说的
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#define INF 0x3f3f3f3f
#define MAX 1005 using namespace std; double x[MAX],y[MAX],z[MAX],r[MAX],Map[MAX][MAX],dist[MAX];
int n,vis[MAX]; double Dist(int a,int b)//计算两球心距离
{
double k1=x[a]-x[b];
double k2=y[a]-y[b];
double k3=z[a]-z[b];
return sqrt(k1*k1+k2*k2+k3*k3);
} void prm()
{
int i,j,k;
double minn,sum=;
vis[]=;
for(i=;i<=n;i++)
dist[i]=Map[][i];
for(i=;i<n;i++)
{
minn=INF;
for(j=;j<=n;j++)
{
if(!vis[j]&&dist[j]<minn)
{
minn=dist[j];
k=j;
}
}
if(minn==INF)
break;
sum+=dist[k];
vis[k]=;
for(j=;j<=n;j++)
{
if(Map[k][j]<dist[j] && !vis[j])
{
dist[j]=Map[k][j];
}
}
}
printf("%.3lf\n",sum);
} int main()
{
int i,j;
while(scanf("%d",&n),n)
{
for(i=;i<MAX;i++)
for(j=;j<MAX;j++)
Map[i][j]=INF;
memset(vis,,sizeof(vis));
memset(dist,,sizeof(dist));
for(i=;i<=n;i++)
{
scanf("%lf%lf%lf%lf",&x[i],&y[i],&z[i],&r[i]);
}
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
if(i!=j)
{
double d=Dist(i,j);
if(d>(r[i]+r[j]))
{
Map[i][j]=Map[j][i]=min(Map[i][j],(d-r[i]-r[j]));
}
else
{
Map[i][j]=Map[j][i]=;
}
}
}
}
prm();
}
return ;
}
POJ 2031 Building a Space Station 最小生成树模板的更多相关文章
- POJ 2031 Building a Space Station (最小生成树)
Building a Space Station Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5173 Accepte ...
- poj 2031 Building a Space Station【最小生成树prime】【模板题】
Building a Space Station Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5699 Accepte ...
- POJ 2031 Building a Space Station【经典最小生成树】
链接: http://poj.org/problem?id=2031 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...
- POJ 2031 Building a Space Station (最小生成树)
Building a Space Station 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/C Description Yo ...
- POJ 2031 Building a Space Station
3维空间中的最小生成树....好久没碰关于图的东西了..... Building a Space Station Time Limit: 1000MS Memory Li ...
- POJ - 2031 Building a Space Station 三维球点生成树Kruskal
Building a Space Station You are a member of the space station engineering team, and are assigned a ...
- POJ 2031 Building a Space Station (计算几何+最小生成树)
题目: Description You are a member of the space station engineering team, and are assigned a task in t ...
- POJ 2031 Building a Space Station【最小生成树+简单计算几何】
You are a member of the space station engineering team, and are assigned a task in the construction ...
- [ An Ac a Day ^_^ ][kuangbin带你飞]专题六 最小生成树 POJ 2031 Building a Space Station
最小生成树模板题 注意最后输出用%f (从C99开始%f已经不能用于输出double 即 输入用%lf 输出用%f) #include<cstdio> #include<algori ...
随机推荐
- Marble 绘制线
#include <QtGui/QApplication> #include <marble/MarbleWidget.h> #include <marble/GeoPa ...
- [转]简述负载均衡和CDN技术
http://blog.jobbole.com/86066/ 曾经见到知乎上有人问“为什么像facebook这类的网站需要上千个工程师维护?”,下面的回答多种多样,但总结起来就是:一个高性能的web系 ...
- hdu 1859 最小长方形
Description 给定一系列2维平面点的坐标(x, y),其中x和y均为整数,要求用一个最小的长方形框将所有点框在内.长方形框的边分别平行于x和y坐标轴,点落在边上也算是被框在内. Input ...
- 判断手机电脑微信 js
if ((navigator.userAgent.match(/(MicroMessenger)/i))) { //微信浏览器 //location.href=""; } else ...
- apicloud
<!doctype html> <html class="no-js"> <head> <meta charset="utf-8 ...
- $pull
$pull 删除所有匹配的文档,不仅仅只是删除一个. db.test.insert( {"todo":["dishes","laundry" ...
- 解决XCode插件在XCode6.4上失效的办法
Xcode 6.4 解决 插件失效的方法 查看 插件目录: ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/ 邮件打开插件 ...
- TextView赋值int型,并显示
textview赋值int型采用text.setText(FPS+""); FPS为int型变量 或者在thread线程需要在主Activity中显示文字,可以调用: runOnU ...
- nginx安装与应用
一.nginx的安装与启动: 1.安装依赖库.nginx的一些模块需要依赖其他第三方库,通常有pcre库(perl compatible regular expression,perl兼容正则表达式, ...
- html5学习(三)
html5特点: 1 微数据与微格式等方面的支持. 2 本地存储,离线应用. 3 API调用,地图,位置,LBS等. 4 连接通讯,后台线程. 5 多媒体. 7 css3.