• POJ 2253 Frogger(Floyd)


    ( ̄▽ ̄)"

    //求每条通路中的最大跳跃距离(即最大的两点间距)中的最小值(所谓minimax),
    //即为frog distance,
    //且青蛙跳到任意点,
    //因此用的是稍作改变的folyd算法,
    //folyd算法用于求解任意两点之间的最短路;
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    double lowcost[210][210];
    
    struct xy
    {
        int x,y;
    }s[210];
    
    void floyd(int n)
    {
        for(int k=1;k<=n;k++)
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
                    if(lowcost[i][j]>lowcost[i][k]&&lowcost[i][j]>lowcost[k][j])
                        lowcost[i][j]=lowcost[j][i]=max(lowcost[i][k],lowcost[k][j]);
    }
    
    double dis(int a,int b)
    {
        return sqrt((double)(s[a].x-s[b].x)*(s[a].x-s[b].x)+(double)(s[a].y-s[b].y)*(s[a].y-s[b].y));
    }
    
    int main()
    {
        int n,Case=0;
        while(scanf("%d",&n)&&n!=0)
        {
            Case++;
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
                    lowcost[i][j]=10000000;
            for(int i=1;i<=n;i++)
                scanf("%d%d",&s[i].x,&s[i].y);
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
                    lowcost[i][j]=lowcost[j][i]=dis(i,j);
            floyd(n);
            printf("Scenario #%d
    Frog Distance = %.3lf
    
    ",Case,lowcost[1][2]);
        }
        return 0;
    }
  • 相关阅读:
    并发编程
    网络与WEB 编程
    包和模块
    元编程
    类和对象
    【算法题 14 LeetCode 147 链表的插入排序】
    剑指offer面试54题
    剑指offer 面试51题
    剑指offer 面试3题
    剑指offer 面试52题
  • 原文地址:https://www.cnblogs.com/atmacmer/p/5196881.html
Copyright © 2020-2023  润新知