• POJ 2253


     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<math.h>
     4 #include<iomanip>
     5 #define MAXN 250
     6 #define inf 1000000000
     7 typedef double elem_t;
     8 
     9 using namespace std;
    10 
    11 double _m[MAXN][MAXN];
    12 struct point
    13 {
    14     double a;
    15     double b;
    16 };
    17 elem_t prim(int n,elem_t mat[][MAXN],int* pre);
    18 point p[250];
    19 int pre[250];
    20 int main()
    21 {
    22     //freopen("acm.acm","r",stdin);
    23     int num;
    24     int max = 0;
    25     int i;
    26     int time = 0;
    27     int j;
    28     int value;
    29     while(cin>>num)
    30     {
    31         if(!num)
    32             break;
    33         cin>>p[0].a;
    34         cin>>p[0].b;
    35         cin>>p[1].a;
    36         cin>>p[1].b;
    37         memset(_m,0,sizeof(_m));
    38         for(i = 2; i < num; ++ i)
    39         {
    40             cin>>p[i].a;
    41             cin>>p[i].b;
    42         }
    43         for(i = 0; i < num; ++ i)
    44         {
    45             for(j = i; j < num; ++ j)
    46             {
    47                 _m[i][j] = (p[i].a - p[j].a)*(p[i].a - p[j].a) + (p[i].b - p[j].b)*(p[i].b - p[j].b);
    48                 _m[j][i] = _m[i][j];
    49             }
    50         }
    51         prim(num,_m,pre);
    52         i = 1;
    53         while(1)
    54         {
    55             if(_m[i][pre[i]] > max)
    56             {
    57                 max = _m[i][pre[i]];
    58             }
    59             if(pre[i] == 0)
    60                 break;
    61             i = pre[i];
    62         }
    63         cout<<"Scenario #"<<++ time<<endl
    64             <<"Frog Distance = "
    65             <<setiosflags(ios::fixed)<<setprecision(3)<<sqrt(long double (max))<<endl
    66             <<endl;
    67         max = 0;
    68     }
    69 
    70 }
    71 
    72 
    73 
    74 elem_t prim(int n,elem_t mat[][MAXN],int* pre){
    75     elem_t min[MAXN],ret=0;
    76     int v[MAXN],i,j,k;
    77     for (i=0;i<n;i++)
    78         min[i]=inf,v[i]=0,pre[i]=-1;
    79     for (min[j=0]=0;j<n;j++){
    80         for (k=-1,i=0;i<n;i++)
    81             if (!v[i]&&(k==-1||min[i]<min[k]))
    82                 k=i;
    83         for (v[k]=1,ret+=min[k],i=0;i<n;i++)
    84             if (!v[i]&&mat[k][i]<min[i])
    85                 min[i]=mat[pre[i]=k][i];
    86     }
    87     return ret;
    88 }

    关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。 

    技术网站地址: vmfor.com

  • 相关阅读:
    .NET开发相关使用工具和框架
    Jquery.KinSlideshow 焦点图标轮换
    可能发生了架构损坏。请运行 DBCC CHECKCATALOG。
    mssql使用问题大合集
    做饭流程js
    点击导航切换和隐藏
    批量修改文件名后缀
    GB2312转码utf-8字符方法
    border三角形的3种方式
    移动端nav导航栏
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4566744.html
Copyright © 2020-2023  润新知