码迷,mamicode.com
首页 > 其他好文 > 详细

poj2253

时间:2014-05-10 05:45:06      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   tar   color   

题意:给定n个点,规定两点间的距离为从一个点到另一个点的一系列路径中相邻两点之间欧几里得距离的最大值。现求一号点和二号点之间的最小距离。

思路:prim算法改一下,从一号点开始求最小生成树,直到找到二号点。(ans保存所求路径中的最大值,而不是最后一个)

例:3

999 999

1 1

3 3

output:1408.557

bubuko.com,布布扣
 1 //prim 改
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cmath>
 5 const int MAXN = 205;
 6 const int inf = 100000000;
 7 int x[MAXN];
 8 int y[MAXN];
 9 double a[MAXN][MAXN];
10 bool vis[MAXN];
11 double dis[MAXN];
12 int n;
13 double max(double a,double b)
14 {
15     return a>b?a:b;
16 }
17 void pre()
18 {
19     for (int i=0;i<n;i++)
20     {
21         for (int j=0;j<n;j++)
22         {
23            a[i][j]=sqrt((double )(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
24         }
25     }
26 }
27 double prim(int src,int end)
28 {
29     double ans;
30     memset(vis,0,sizeof(vis));
31     for (int i=0;i<n;i++)
32     dis[i]=(double )inf;
33     dis[src]=0;
34     for (int i=0;i<n;i++)
35     {
36         double temp=(double )inf;
37         int k;
38         for (int j=0;j<n;j++)
39         {
40             if (vis[j]) continue;
41             if (temp>dis[j])
42             {
43                 temp=dis[j];
44                 k=j;
45             }
46         }
47         ans=max(ans,temp);
48         if (k==end) return ans;
49         vis[k]=1;
50         for (int j=0;j<n;j++)
51         {
52             if (vis[j]) continue;
53             if (dis[j]>a[k][j])
54             dis[j]=a[k][j];
55         }
56     }
57     return ans;
58 }
59 int main()
60 {
61     int t=0;
62     while (scanf("%d",&n),n)
63     {
64         for (int i=0;i<n;i++)
65         {
66             scanf("%d%d",&x[i],&y[i]);
67         }
68         pre();
69         double ans=prim(0,1);
70 
71         printf("Scenario #%d\n",++t);
72         printf("Frog Distance = %.3f\n\n",ans);
73     }
74     return 0;
75 }
View Code

 

poj2253,布布扣,bubuko.com

poj2253

标签:style   blog   class   code   tar   color   

原文地址:http://www.cnblogs.com/djingjing/p/3719490.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!