zoukankan      html  css  js  c++  java
  • POJ2253 Frogger -DIJKSTRA || FLOYD最短路练习

    题目大意:池塘里有N片荷叶,给出每片荷叶的坐标,青蛙要从X号荷叶跳到Y号荷叶,问单步最少要跳多少才能到达。

    题解:这道题可以采取类FLOYD的方法,要从X跳到Y,当越来越多的荷叶做为中间点来跳的时候,显然有可能单步跳的距离更短。程序如下:

    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    const int maxn=210;
    struct point{int x,y;}p[maxn];
    double d[maxn][maxn];
    double max(double x,double y){
           return x>y?x:y;       
    }
    int main(){
        int i,j,k,m,n,num=0;
        double s;
        while(1){
            num++;
            scanf("%d",&n);         
            if(!n)break;
            for(i=1;i<=n;i++)
                scanf("%d%d",&p[i].x,&p[i].y);
            for(i=1;i<=n;i++)
                for(j=1;j<=n;j++){
                    s=sqrt((p[i].x-p[j].x)*(p[i].x-p[j].x)+(p[i].y-p[j].y)*(p[i].y-p[j].y));
                    d[i][j]=s;
                    d[j][i]=s;
                }
            for(k=1;k<=n;k++)
                for(i=1;i<=n;i++)
                    for(j=1;j<=n;j++)
                        if(d[i][j]>max(d[i][k],d[k][j])){
                            d[i][j]=max(d[i][k],d[k][j]);
                        }
            printf("Scenario #%d
    Frog Distance = %.3f
    
    ",num,d[1][2]);                
        }    
    
        return 0;
    }
    


  • 相关阅读:
    UVA12096
    Phonegap
    苹果证书的申请、unityoc交互基础
    撸代码--linux进程通信(基于共享内存)
    在Mac上ppt导出pdf
    Tour UVA
    2144 砝码称重 2
    1553 互斥的数
    P1063 能量项链
    P1041 传染病控制
  • 原文地址:https://www.cnblogs.com/cnyali/p/4163894.html
Copyright © 2011-2022 走看看