poj 2728 Desert King(最优比例生成树)
来源:互联网 发布:廖雪峰python视频下载 编辑:程序博客网 时间:2024/05/22 04:54
分类: Algorithm-动态规划2013-07-25 13:30 233人阅读 评论(0) 收藏 举报
- #include <iostream>
- #include <cstdio>
- #include <cmath>
- #include <cstdlib>
- #include <cstring>
- #include <iomanip>
- using namespace std;
- const int maxn=1005;
- const double eps=1e-6;
- const double inf=0xffffffff;
- struct node{
- double x,y,h;
- }no[maxn];
- int n;
- bool visited[maxn];
- double weight[maxn][maxn],c[maxn][maxn],d[maxn][maxn];
- double up,down;
- double dis(node &a,node &b){
- return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
- }
- void creattree(int n,double r)
- {
- for(int i=0;i<n;i++)
- for(int j=0;j<n;j++)
- {
- weight[i][j]=c[i][j]-r*d[i][j];
- }
- }
- void prime()
- {
- up=0.0;down=0.0;
- memset(visited,0,sizeof(visited));
- int index;
- int pre[maxn];
- double dist[maxn];
- visited[1]=1;
- for(int i=0;i<n;i++)
- {
- dist[i]=weight[1][i];
- pre[i]=1;
- }
- for(int i=0;i<n;i++)
- {
- double mmimum=inf;
- for(int j=0;j<n;j++)
- {
- if(!visited[j]&&dist[j]<mmimum)
- {
- mmimum=dist[j];
- index=j;
- }
- }
- visited[index]=1;
- up+=c[pre[index]][index];
- down+=d[pre[index]][index];
- for(int i=0;i<n;i++)
- {
- if(!visited[i]&&weight[index][i]<dist[i])
- {
- dist[i]=weight[index][i];
- pre[i]=index;
- }
- }
- }
- }
- int main()
- {
- while(scanf("%d",&n),n)
- {
- for(int i=0;i<n;i++)
- {
- scanf("%lf%lf%lf",&no[i].x,&no[i].y,&no[i].h);
- }
- for(int i=0;i<n;i++)
- for(int j=0;j<n;j++)
- {
- c[i][j]=fabs(no[i].h-no[j].h);
- d[i][j]=dis(no[i],no[j]);
- }
- double r=30.0,ans=30.0;
- while(1)
- {
- creattree(n,r);
- prime();
- r=up/down;
- if(fabs(r-ans)<=eps)break;
- else ans=r;
- }
- printf("%.3lf\n",ans);
- //cout<<fixed<<setprecision(3)<<ans<<endl;
- }
- }
0 0
- POJ 2728 Desert King(最优比例生成树)
- poj 2728 Desert King(最优比例生成树)
- poj 2728 Desert King(最优比例生成树)
- poj 2728 Desert King(最优比例生成树)
- poj 2728 Desert King(最优比例生成树)
- poj 2728 Desert King(最优比例生成树)
- POJ 2728 Desert King 最优比例生成树
- POJ 2728 Desert King 最优比例生成树
- POJ 2728 Desert King(最优比例生成树)
- POJ 2728 Desert King (最优比例生成树)
- POJ 2728 Desert King (最优比例生成树)
- POJ 2728 Desert King (最优比例生成树)
- POJ 2728 Desert King (最优比例生成树)
- POJ 2728 Desert King (最优比例生成树)
- poj 2728(Desert King) 最优比例生成树 (分数规划)
- poj Desert King 最优比例生成树 01分数规划
- poj2728 Desert King,最优比例生成树
- POJ2728 Desert King 最优比例生成树
- OpenCV_连通区域分析(Connected Component Analysis-Labeling)
- ZOJ-1745
- 数据结构之顺序栈
- OpenCV计算连通区域数目与最大连通区域并标示出
- 顺序容器
- poj 2728 Desert King(最优比例生成树)
- (18)JS的定时器的用法
- DNS安全 -月宫吴刚
- C#连接SQL Server 数据库
- TLV-简单的数据传输协议
- Android手机自动发送短信
- VC++禁止ALT+F4的关闭操作
- 匹配问题学习小结(POJ)
- poj 3266 Cow School 分数规划