• POJ 2253-Frogger (Prim)


    题目链接:Frogger

    题意:两仅仅青蛙,A和B,A想到B哪里去,可是A得弹跳有限制,所以不能直接到B,可是有其它的石头作为过渡点,能够通过他们到达B,问A到B的全部路径中。它弹跳最大的跨度的最小值

    PS:最小生成树过的,刚開始用Dijstra做,Kao,精度损失的厉害,对于Dijksra的变形不大会变啊,看了Discuss有人用最小生成树过,我一划拉,还真是。敲了,就过了,等会研究研究最短路的各种变形,有模板不会变,不会灵活应用,渣渣就是渣渣。


    ME               Time

    1017Kb          0Ms

    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <string.h>
    #include <algorithm>
    const int INF = 1e8;
    const int N = 205;
    using namespace std;
    struct node{
        int x,y;
    }g[N];
    int n,vis[N];
    double mapp[N][N],dis[N];
    double Prim()
    {
        int pos;
        double maxe=0,minn;
        for(int i=1;i<=n;i++)
        {
            dis[i]=mapp[1][i];
            vis[i]=0;
        }
        vis[1]=1;
        dis[1]=0;
        for(int i=1;i<=n;i++)
        {
            minn=INF;
            pos=1;
            for(int j=1;j<=n;j++)
               {
                   if(!vis[j]&&dis[j]<minn)
                {
                    pos=j;
                    minn=dis[j];
                }
               }
            if(minn>maxe)
                maxe=minn;
            if(pos==2) //假设当前构树条件是2号哇,那么直接返回,无其它路线了
                return maxe;
            vis[pos]=1;
            for(int j=1;j<=n;j++)
                if(!vis[j] &&mapp[pos][j] < dis[j])
                {
                    dis[j] = mapp[pos][j];
                }
        }
        return dis[2];
    }
    void init(int i)
    {
        double t;
        mapp[i][i]=0;
        for(int j=1;j<i;j++)
        {
            t=sqrt((g[i].x-g[j].x)*(g[i].x-g[j].x)+(g[i].y-g[j].y)*(g[i].y-g[j].y));
            mapp[i][j] = t;
            mapp[j][i] = t;
        }
    }
    int main()
    {
        int c=0;
        double st;
        while(scanf("%d",&n),n)
        {
            for(int i=1;i<=n;i++)
            {
                scanf("%d%d",&g[i].x,&g[i].y);
                init(i);
            }
            st = Prim();
            printf("Scenario #%d
    ",++c);
            printf("Frog Distance = %.3f
    
    ",st);//看了Discuss 知道。POJ不能%.3lf
        }
        return 0;
    }





  • 相关阅读:
    NLP---word2vec的python实现
    matplotlib---Annotation标注
    matplotlib---legend图例
    matplotlib---设置坐标轴
    windows下右键新建md文件
    vue+webpack+npm 环境内存溢出解决办法
    element-ui tree树形组件自定义实现可展开选择表格
    vue-动态验证码
    ES6 数组函数forEach()、map()、filter()、find()、every()、some()、reduce()
    eslint配置文件规则
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7096383.html
Copyright © 2020-2023  润新知