一、题目

 Frogger

二、分析

 题意关键点就是那个青蛙距离。就是所有1到2的点的路径中,每条路径都可以确定一个最大值,这个最大值就是青蛙要跳的青蛙距离,然后要求这个青蛙距离最小值。

 其实就是最短路的变形,用dijkstra,原先求最短路的时候是每次确定当前最小距离的点,那么,这题只需要每次确定一个当前最有值就可以了,易证,队列后面的值是不会有更小了的。

三、AC代码

 1 #include <cstdio>
2 #include <iostream>
3 #include <cmath>
4 #include <cstring>
5 #include <queue>
6 #include <fstream>
7 using namespace std;
8 #define INF 0x3f3f3f3f
9 typedef pair<double, int> P;
10 const int MAXN = 2e2 + 14;
11 struct point
12 {
13 int x, y;
14 }node[MAXN];
15 struct cmp
16 {
17 bool operator()(const P &a, const P &b)
18 {
19 return a.first > b.first;
20 }
21 };
22 int n;
23 double G[MAXN][MAXN];
24 double dist[MAXN];
25 bool flag[MAXN];
26
27 void Dijkstra(int s)
28 {
29 priority_queue<P, vector<P>, cmp> pq;
30 memset(dist, 0, sizeof(dist));
31 memset(flag, 0, sizeof(flag));
32 pq.push(P(0, 1));
33 while( !pq.empty() )
34 {
35 P t = pq.top();
36 pq.pop();
37 int v = t.second;
38 if(flag[v])
39 continue;
40 flag[v] = 1;
41 dist[v] = t.first;
42 for(int i = 1; i <= n; i++)
43 {
44 if(!flag[i])
45 {
46 double m = max(dist[v], G[v][i]);
47 pq.push(P(m, i));
48 }
49 }
50 }
51
52 }
53
54
55 double calc(point a, point b)
56 {
57 double ans;
58 double x = a.x - b.x;
59 double y = a.y - b.y;
60 ans = sqrt(x*x + y*y);
61 return ans;
62 }
63
64
65 int main()
66 {
67 //freopen("in.txt", "r", stdin);
68 int Case = 1;
69 while(scanf("%d", &n) != EOF)
70 {
71 if(n == 0)
72 break;
73 if(Case != 1)
74 puts("");
75 for(int i = 1; i <= n; i++)
76 {
77 scanf("%d%d", &node[i].x, &node[i].y);
78 }
79 for(int i = 1; i <= n; i++)
80 {
81 for(int j = i+1; j <= n; j++)
82 {
83 G[i][j] = calc(node[i], node[j]);
84 G[j][i] = G[i][j];
85 }
86 G[i][i] = 0;
87 }
88 Dijkstra(1);
89 printf("Scenario #%d\n", Case++);
90 printf("Frog Distance = %.3f\n", dist[2]);
91 };
92 return 0;
93 }

POJ_2253 Frogger 【最短路变形】的更多相关文章

  1. POJ 2253 Frogger ( 最短路变形 || 最小生成树 )

    题意 : 给出二维平面上 N 个点,前两个点为起点和终点,问你从起点到终点的所有路径中拥有最短两点间距是多少. 分析 : ① 考虑最小生成树中 Kruskal 算法,在建树的过程中贪心的从最小的边一个 ...

  2. POJ2253 Frogger —— 最短路变形

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

  3. B - Frogger 最短路变形('最长路'求'最短路','最短路'求'最长路')

    http://poj.org/problem?id=2253 题目大意: 有一只可怜没人爱的小青蛙,打算去找他的女神青蛙姐姐,但是池塘水路不能走,所以只能通过蹦跶的形式到达目的地,问你从小青蛙到青蛙姐 ...

  4. POJ 2253 Frogger -- 最短路变形

    这题的坑点在POJ输出double不能用%.lf而要用%.f...真是神坑. 题意:给出一个无向图,求节点1到2之间的最大边的边权的最小值. 算法:Dijkstra 题目每次选择权值最小的边进行延伸访 ...

  5. POJ-2253.Frogger.(求每条路径中最大值的最小值,最短路变形)

    做到了这个题,感觉网上的博客是真的水,只有kuangbin大神一句话就点醒了我,所以我写这篇博客是为了让最短路的入门者尽快脱坑...... 本题思路:本题是最短路的变形,要求出最短路中的最大跳跃距离, ...

  6. POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]

    题目链接:http://poj.org/problem?id=3635 题意题解等均参考:POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]. 一些口胡: ...

  7. POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]

    题目链接:http://poj.org/problem?id=3635 Description After going through the receipts from your car trip ...

  8. POJ-1797Heavy Transportation,最短路变形,用dijkstra稍加修改就可以了;

    Heavy Transportation Time Limit: 3000MS   Memory Limit: 30000K          Description Background  Hugo ...

  9. HDOJ find the safest road 1596【最短路变形】

    find the safest road Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  10. HN0I2000最优乘车 (最短路变形)

    HN0I2000最优乘车 (最短路变形) 版权声明:本篇随笔版权归作者YJSheep(www.cnblogs.com/yangyaojia)所有,转载请保留原地址! [试题]为了简化城市公共汽车收费系 ...

随机推荐

  1. HTML5 dataset All In One

    HTML5 dataset All In One dataset https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignEleme ...

  2. C# 6.0 Features , C# 7.0 Features

    1 1 1 C# 6.0 Features http://stackoverflow.com/documentation/c%23/24/c-sharp-6-0-features#t=20160828 ...

  3. React Fragment All In One

    React Fragment All In One React还提供了一个无需包装即可呈现多个元素的组件. https://reactjs.org/docs/react-api.html#fragme ...

  4. Matthew Effect

    Matthew Effect 马太效应 / 马修效应 马太效应(Matthew Effect),是指好的愈好,坏的愈坏,多的愈多,少的愈少的一种现象, 即两极分化现象. 来自于圣经<新约•马太福 ...

  5. ORM All In One

    ORM All In One ORM Object Relational Mapping https://en.wikipedia.org/wiki/Object-relational_mapping ...

  6. how to input special keyboard symbol in macOS(⌘⇧⌃⌥)

    how to input special keyboard symbol in macOS(⌘⇧⌃⌥) emoji ctrl + command + space / ⌘⇧⌃ ⌘⇧⌃ Character ...

  7. where is the storage location of the browser's HTTP cache? disk or memory

    where is the storage location of the browser's HTTP cache? disk or memory HTTP cache & storage l ...

  8. 初学c++,vc++6.0必备!

    文章首发 | 公众号:lunvey 作为一个纯粹的萌新,工作需要,刚接触到c++. 按照以往的经验,配置一个开发环境是首要的,其次便是边学边敲. c++入门书籍寻找了一堆,发现了一个共同点,在Wind ...

  9. css中a元素放长英文字母或者数字自动换行的解决

    在做链接分享页面的时候遇到a元素中的下载链接长英文溢出不换行的问题 在给他以及他父元素设置宽度依然没有解决这个问题 最后解决办法给元素加上word-wrap:break-word 解释:使用break ...

  10. Django Admin 配置和定制基本功能(基本二次开发配置)

    一 列表显示页面  1. list_display,列表时,定制显示的列 @admin.register(models.UserInfo) class UserAdmin(admin.ModelAdm ...