题目大意:
一个叫做弗雷迪的青蛙坐在湖中间的一块石头上。突然他注意到他的青蛙女神菲奥娜坐在另一块石头上面,于是他计划去看她,但是呢湖里面的水很脏并且充满了游客的防晒霜,所以他想避免游泳而采用跳跃的方式去接近他的女神。
不幸的是菲奥娜所在的石头不在他的跳跃范围以内,因此弗雷迪决定使用别的石头当做中间转跳以此到达女神那里,不过这只青蛙比较懒,不想多跳,所以问他至少要跳多远??
最短路的一种变形问题,还是比较容易解决的,只需要记录路径上的最大边即可。
/////////////////////////////////////////////////////////////////////
想法没有问题..不过第一次因为没有看清0结束,错了一次
    #include<algorithm>
    #include<queue>
    #include<stdio.h>
    #include<string.h>
    #include<vector>
    #include<math.h>
    using namespace std;     const int maxn = ;
    const int oo = 0xfffffff;     struct point{double x, y;}p[maxn];
    struct node
    {
        int y;
        double len;
        node(int y, double len):y(y), len(len){}
    };
    vector<node> G[maxn];
    double v[maxn];     //求两点间的距离
    double Len(point a, point b)
    {
        return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
    }
    void Spfa()
    {
        queue<int> Q;
        Q.push();         while(Q.size())
        {
            int s = Q.front();Q.pop();
            int len = G[s].size();             for(int i=; i<len; i++)
            {
                node q = G[s][i];                 if(v[s] < v[q.y] && q.len < v[q.y])
                {
                    v[q.y] = max(v[s], q.len);//要选取一条路上的最大的那条边
                    Q.push(q.y);
                }
            }
        }
    }     int main()
    {
        int N, t=;         while(scanf("%d", &N), N)
        {
            int i, j;             for(i=; i<=N; i++)
                scanf("%lf%lf", &p[i].x, &p[i].y);             for(i=; i<=N; i++)
            for(j=; j<=N; j++)
            {
                if(i == j)
                    continue;                 double len = Len(p[i], p[j]);
                G[i].push_back(node(j, len));
            }             for(i=; i<=N; i++)
                v[i] = oo;
            v[] = ;             Spfa();             if(t != )printf("\n");
            printf("Scenario #%d\n", t++);
            printf("Frog Distance = %.3f\n", v[]);             for(i=; i<=N; i++)
                G[i].clear();
        }         return ;

}

B - Frogger的更多相关文章

  1. POJ 2253 Frogger(Dijkstra)

    传送门 Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 39453   Accepted: 12691 Des ...

  2. 2016HUAS_ACM暑假集训3B - Frogger

    好几天没更新博客了,因为这周在看关于图论的算法,有好几个(还是英文名字-_-||),人晕晕的...... 说一下这个Frogger吧.这个题目的话......难的不是做法,而是题意... 大致题意:有 ...

  3. Frogger(floyd变形)

    Frogger Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Stat ...

  4. 最小瓶颈路 Uva 534 Frogger

    说明:关于Uva的题目,可以在vjudge上做的,不用到Uva(那个极其慢的)网站去做. 最小瓶颈路:找u到v的一条路径满足最大边权值尽量小 先求最小生成树,然后u到v的路径在树上是唯一的,答案就是这 ...

  5. POJ2253 Frogger

    Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 34865   Accepted: 11192 Descrip ...

  6. poj2253 最短路 floyd Frogger

    Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28825   Accepted: 9359 Descript ...

  7. 最短路(Floyd_Warshall) POJ 2253 Frogger

    题目传送门 /* 最短路:Floyd算法模板题 */ #include <cstdio> #include <iostream> #include <algorithm& ...

  8. POJ 2253 Frogger

    题目链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

  9. poj 2253 Frogger dijkstra算法实现

    点击打开链接 Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 21653   Accepted: 7042 D ...

  10. POJ 2253 Frogger (最短路)

    Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28333   Accepted: 9208 Descript ...

随机推荐

  1. window.showModalDialog()复制内容

    ShowModalDialog 打开的 页面上加入个 <span id="mySpan" name="mySpan" contentEditable=&q ...

  2. redhat6.4 配置centos6 yum替换

    1.卸载掉系统redhat自带的yum   rpm -qa |grep yum |xargs rpm -e --nodeps 2 下载相关的centos yum插件   主要有python-inipa ...

  3. IOS常用开源库

    转自:http://www.csdn.net/article/2013-06-18/2815806-GitHub-iOS-open-source-projects-two/1 1. AFNetwork ...

  4. SDWebImage 在多线程下载图片时防止错乱的策略

    在我们使用sd的时候,对tableView  上cell得图片进行异步下载的时候会遇到这样一个问题: 由于cell的重用机制,在我们加载出一个cell的时候imageView数据源开启一个下载任务并返 ...

  5. C#winform程序自定义鼠标样式

    public void SetCursor(Bitmap cursor, Point hotPoint) { int hotX = hotPoint.X; int hotY = hotPoint.Y; ...

  6. Tomcat设置最佳线程数总结

    最佳线程数: 性能压测的情况下,起初随着用户数的增加,QPS会上升,当到了一定的阀值之后,用户数量增加QPS并不会增加,或者增加不明显,同时请求的响应时间却大幅增加.这个阀值我们认为是最佳线程数. 为 ...

  7. Windows 8 / 8.1 禁用驱动签名最详细图文教程

    Windows 8 鼠标右上角/右下角弹出边栏,选择“设置” 点击“更改电脑设置”: 选择“常规”,右侧拖到底,点击“高级启动”-“立即重启”: 稍后进入恢复页面,选择“疑难解答” 进入疑难解答后,选 ...

  8. Getopt::Long 模块的简单使用

    用法简介 1.带值参数传入程序内部 ※参数类型:整数, 浮点数, 字串 GetOptions( 'tag=s' => \$tag ); ‘=’表示此参数一定要有参数值, 若改用’:'代替表示参数 ...

  9. 生成订单唯一id

    $yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'); $orderSn = $yCode[intval(date('Y') ...

  10. Linux之Vim编辑器使用

    vim文本编辑器用于建立 编辑 显示文本文件,vim没有菜单,只有命令 在windows 平台下可使用gvim进行编写 Vim三种工作模式: 常有命令: 1.INSERT插入命令 i 在光标前插入 I ...