zoukankan      html  css  js  c++  java
  • 最短路变形 Frogger POJ

    题意:给定一点到另一点的所有路径中,至少需要跳的最大距离,不是最短路问题,路可以很长,跳的石头很多,要求是跳的最大距离。

    用dis数组存储到达每一点至少需要跳的最大距离。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #define inf 0x3f3f3f
    using namespace std;
    double dis[205], m[205][205];
    int vis[205],n;
    typedef struct
    {
        int x,y;
    } Point;
    Point a[205];
    double distant(Point c1,Point c2)
    {
        return sqrt(1.0*(c1.x-c2.x)*(c1.x-c2.x)+1.0*(c1.y-c2.y)*(c1.y-c2.y));
    }
    void dijkstra()
    {
        memset(vis,0,sizeof(vis));
        for(int i=1;i<=n;i++) dis[i]=(i==1?0:inf);
        for(int i=1;i<=n;i++)
        {
            int x,mi=inf;
            for(int j=1;j<=n;j++)
                if(!vis[j]&&dis[j]<mi) mi=dis[x=j];
                vis[x]=1;
            for(int k=1;k<=n;k++)
                dis[k]=min(dis[k],max(dis[x],m[x][k]));
        }
    }
    int main()
    {
        int g=0;
        while(scanf("%d",&n),n)
        {
            for(int i=1; i<=n; i++)
                scanf("%d%d",&a[i].x,&a[i].y);
            for(int i=1; i<=n; i++)
                for(int j=1; j<=n; j++)
                    m[i][j]=distant(a[i],a[j]);
           dijkstra();
        printf("Scenario #%d
    ",++g);
        printf("Frog Distance = %.3f
    ",dis[2]);
        printf("
    ");
    }
    return 0;
    }
  • 相关阅读:
    定时器
    WPF拖动总结
    将两个不同进程的窗口设置为父子关系
    Docker私有仓库管理
    Dockerfile创建zabbix监控体系
    Dockfile自动创建discuz论坛和可道云
    Docker的自动构建镜像
    Docker简介
    Mapreduce
    分布式文件系统与HDFS
  • 原文地址:https://www.cnblogs.com/Twsc/p/7238226.html
Copyright © 2011-2022 走看看