zoukankan      html  css  js  c++  java
  • POJ 2253 Frogger

    题目大意:给一个图,求给出的两个节点之间,所有路径中权值最大的最小值(就是取出每一条路径里的权值最大值,然后答案就是这些最大值的最小值,有些拗口,注意一下)

    分析:赤裸裸的Floyd。O(n^3)复杂度,贴出代码:

     1 #include<stdio.h>
     2 #include<cmath>
     3 #include<cstring>
     4 #define Max 210
     5 int n,k=0;
     6 struct Point
     7 {
     8     double x,y;
     9 }point[Max];
    10 double map[Max][Max];
    11 double juli(Point a,Point b)
    12 {
    13     double x,y;
    14     x=(a.x-b.x)*(a.x-b.x);
    15     y=(a.y-b.y)*(a.y-b.y);
    16     return sqrt(x+y);
    17 }
    18 void init()
    19 {
    20     int i,j;
    21     for(i=1;i<=n;i++)
    22         scanf("%lf%lf",&point[i].x,&point[i].y);
    23     for(i=1;i<n;i++)
    24     for(j=i+1;j<=n;j++){
    25         map[i][j]=map[j][i]=juli(point[i],point[j]);
    26     }
    27 }
    28 void solve()
    29 {
    30     int k,i,j;
    31     for(k=1;k<=n;k++)
    32     for(i=1;i<=n;i++)
    33     for(j=i+1;j<=n;j++)
    34     if(map[i][k]<map[i][j] && map[k][j]<map[i][j]){
    35             if(map[i][k]<map[k][j]) map[j][i]=map[i][j]=map[k][j];
    36             else                    map[j][i]=map[i][j]=map[i][k];
    37 
    38     }
    39 }
    40 void outit()
    41 {
    42     printf("Scenario #%d
    ",++k);
    43     printf("Frog Distance = %.3lf
    
    ",map[1][2]);
    44 }
    45 int main()
    46 {
    47     while(scanf("%d",&n) && n){
    48         init();
    49         solve();
    50         outit();
    51     }
    52     return 0;
    53 }
    View Code
  • 相关阅读:
    第八周学习总结
    《程序是怎样跑起来的》第十一章
    第七周学习总结
    《程序是怎样跑起来的》第十章
    《程序是怎样跑起的》第九章
    第五周学习总结
    《程序是怎样跑起来的》第八章
    《程序是怎样跑起来的》第七章
    抽象类与接口学习总结
    多态学习总结
  • 原文地址:https://www.cnblogs.com/bokezhilu/p/3608714.html
Copyright © 2011-2022 走看看