POJ_2253 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 【最短路变形】的更多相关文章
- POJ 2253 Frogger ( 最短路变形 || 最小生成树 )
题意 : 给出二维平面上 N 个点,前两个点为起点和终点,问你从起点到终点的所有路径中拥有最短两点间距是多少. 分析 : ① 考虑最小生成树中 Kruskal 算法,在建树的过程中贪心的从最小的边一个 ...
- POJ2253 Frogger —— 最短路变形
题目链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
- B - Frogger 最短路变形('最长路'求'最短路','最短路'求'最长路')
http://poj.org/problem?id=2253 题目大意: 有一只可怜没人爱的小青蛙,打算去找他的女神青蛙姐姐,但是池塘水路不能走,所以只能通过蹦跶的形式到达目的地,问你从小青蛙到青蛙姐 ...
- POJ 2253 Frogger -- 最短路变形
这题的坑点在POJ输出double不能用%.lf而要用%.f...真是神坑. 题意:给出一个无向图,求节点1到2之间的最大边的边权的最小值. 算法:Dijkstra 题目每次选择权值最小的边进行延伸访 ...
- POJ-2253.Frogger.(求每条路径中最大值的最小值,最短路变形)
做到了这个题,感觉网上的博客是真的水,只有kuangbin大神一句话就点醒了我,所以我写这篇博客是为了让最短路的入门者尽快脱坑...... 本题思路:本题是最短路的变形,要求出最短路中的最大跳跃距离, ...
- POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]
题目链接:http://poj.org/problem?id=3635 题意题解等均参考:POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]. 一些口胡: ...
- POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]
题目链接:http://poj.org/problem?id=3635 Description After going through the receipts from your car trip ...
- POJ-1797Heavy Transportation,最短路变形,用dijkstra稍加修改就可以了;
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Description Background Hugo ...
- HDOJ find the safest road 1596【最短路变形】
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- HN0I2000最优乘车 (最短路变形)
HN0I2000最优乘车 (最短路变形) 版权声明:本篇随笔版权归作者YJSheep(www.cnblogs.com/yangyaojia)所有,转载请保留原地址! [试题]为了简化城市公共汽车收费系 ...
随机推荐
- meterpreter php payload && windows payload 学习
一 情景 本地kali linux 192.168.1.2 目标 windows NT 服务器192.168.1.4 目的是获取shell 二 过程 首先在linux建立终端 ,msfconsole ...
- chrome禁用缓存:调试javascript注意事项
chrome禁用缓存:调试javascript chrome对js和图片的缓存,导致调试的程序不是最新的,有时F5刷新了都没用. 可以禁用缓存: 先按F12,再按F1, 勾选 Disable ca ...
- cobaltstrike的使用
0x01 介绍 Cobalt Strike是一款渗透测试神器,常被业界人称为CS神器.Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以 ...
- 链接脚本再探和VMA与LMA
链接脚本简单描述 连接脚本的描述都是以节(section)的单位的,网上也有很多描述链接脚本语法的好文章,再不济还有官方的说明文档可以用来学习,其实主要就是对编译构建的整个过程有了深入的理解后就能对链 ...
- ARM cache 工作方式
综述 现在的CPU的速度远远高于现代存储器的速度所以出现了cache.按和CPU距离分为L1级和L2级(SM)等.这里主要记录一下自己对cache的工作方式的学习理解. cache工作方式 cahe是 ...
- ARM汇编指令-STMFD/LDMFD
根据调用规则ATPCS,程序一般都使用FD(FullDescending)类型的数据栈(满栈),那么对立的就由空栈类型的数据栈.空栈是指SP操作完后指向的地址空间是未使用的,反之满栈就是SP指向的地址 ...
- Shell 编程快速上手
Shell 编程快速上手 test.sh #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do touch ...
- Apple iPhone 12 Pro 数据迁移方式 All In One
Apple iPhone 12 Pro 数据迁移方式 All In One iPhone 12 Pro https://mp.weixin.qq.com/s/US1Z_69zVQIhV-cNW1E6A ...
- Headless Chrome Node API
puppeteer Headless Chrome Node API https://github.com/GoogleChrome/puppeteer https://pptr.dev/ PWA h ...
- GreenSock & SVG Animation
GreenSock & SVG Animation refs https://greensock.com/ https://greensock.com/learning/ GSAP https ...