题目连接:http://poj.org/problem?id=2253

题意:给出一个无向图,求一条1~2的路径使得路径上的最大边权最小.

分析:dij将距离更新改成取最大值即可,即dp[i]表示到达i点过程中的最大边权,更新后可能多个,再靠优先队列取出最小的最大边权。

不过好像精度问题,我的代码C++能AC,但G++就不能。

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <string>
  4. #include <cmath>
  5. #include <iostream>
  6. #include <algorithm>
  7. #include <queue>
  8. #include <cstdlib>
  9. #include <stack>
  10. #include <vector>
  11. #include <set>
  12. #include <map>
  13. #define LL long long
  14. #define mod 100000000
  15. #define inf 0x3f3f3f3f
  16. #define eps 1e-9
  17. #define N 1010
  18. #define FILL(a,b) (memset(a,b,sizeof(a)))
  19. #define lson l,m,rt<<1
  20. #define rson m+1,r,rt<<1|1
  21. #define PII pair<int,int>
  22. using namespace std;
  23. struct node
  24. {
  25. int v;
  26. double w;
  27. node(){}
  28. node(int v,double w):v(v),w(w){}
  29. bool operator<(const node &a)const
  30. {
  31. return w>a.w;
  32. }
  33. };
  34. double dp[N];
  35. int vis[N],n;
  36. vector<node>g[N];
  37. double dij()
  38. {
  39. priority_queue<node>que;
  40. while(!que.empty())que.pop();
  41. for(int i=;i<=n;i++)dp[i]=1e9;
  42. FILL(vis,);
  43. node cur,nxt;
  44. cur.v=;cur.w=;
  45. dp[]=;
  46. que.push(cur);
  47. while(!que.empty())
  48. {
  49. cur=que.top();que.pop();
  50. int x=cur.v;
  51. if(vis[x])continue;
  52. vis[x]=;
  53. for(int i=,sz=g[x].size();i<sz;i++)
  54. {
  55. nxt=g[x][i];
  56. int v=nxt.v;double w=nxt.w;
  57. if(max(dp[x],w)<dp[v])
  58. {
  59. dp[v]=max(dp[x],w);
  60. que.push(node(v,dp[v]));
  61. }
  62. }
  63. }
  64. return dp[];
  65. }
  66. int x[],y[];
  67. double dist(int a,int b,int x,int y)
  68. {
  69. return sqrt(1.0*(a-x)*(a-x)+1.0*(b-y)*(b-y));
  70. }
  71. int main()
  72. {
  73. int cas=;
  74. while(scanf("%d",&n)&&n)
  75. {
  76. for(int i=;i<=n;i++)
  77. {
  78. scanf("%d%d",&x[i],&y[i]);
  79. g[i].clear();
  80. }
  81. for(int i=;i<=n;i++)
  82. for(int j=i+;j<=n;j++)
  83. {
  84. double d=dist(x[i],y[i],x[j],y[j]);
  85. g[i].push_back(node(j,d));
  86. g[j].push_back(node(i,d));
  87. }
  88. printf("Scenario #%d\n",cas++);
  89. printf("Frog Distance = %.3lf\n\n",dij());
  90. }
  91. }

poj2253(最短路小变形)的更多相关文章

  1. poj1797(最短路小变形)

    题目连接:http://poj.org/problem?id=1797 题意: 分析:dp[i]表示到达i点的过程中的最大承受重量,更新到i点时可能有多条路径,由优先队列堆出最大的那条即可. #inc ...

  2. POJ-2253-Frogger +最短路小变形

    传送门:http://poj.org/problem?id=2253 参考:https://www.cnblogs.com/lienus/p/4273159.html 题意:给出一个无向图,求一条从 ...

  3. POJ-2253 Frogger---最短路变形&&最大边的最小值

    题目链接: https://vjudge.net/problem/POJ-2253 题目大意: 青蛙A想访问青蛙B,必须跳着石头过去,不幸的是,B所在的石头太远了,需要借助其他的石头,求从A到B的路径 ...

  4. poj2253 最短路变形

    题目连接:http://poj.org/problem?id=2253 Description Freddy Frog is sitting on a stone in the middle of a ...

  5. POJ 1797-Heavy Transportation-dijkstra小变形和POJ2253类似

    传送门:http://poj.org/problem?id=1797 题意: 在起点和终点间找到一条路,使得经过的边的最小值是最大的: 和POJ2253类似,传送门:http://www.cnblog ...

  6. POJ-2253(最短路变形+dijikstra算法+求解所有路径中所有最长边中的一个最小值)

    frogger POJ-2253 这题的代码特别像prim求解最小生成树的代码,其实两者本来也很像. 这里的d数组不再维护的起点到该点的最短距离了,而是路径中的最长距离. #include<io ...

  7. UVA 12661 Funny Car Racing 有趣的赛车比赛(最短路,变形)

    题意:赛道有n个交叉点,和m条单向路径(有重边),每条路都是周期性关闭的,且通过仍需一段时间.在比赛开始时,所有道路刚好打开,选择进入该道路必须满足“在打开的时间段进入,在关闭之前出来”,即不可在路上 ...

  8. UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。

    题意: 给一个由n*m个正方形格子组成的矩形,其中每个格子的边都是可以走的,长度给定,规定:如果在进入该路前需要拐弯,或者走完该路需要拐弯,都是需要付出双倍距离的(每条路最多算2倍).问从起点到终点的 ...

  9. DAG求最短路--TSP变形--状压dp

    DAG状压dp的一种 题目: $m$个城市,$n$张车票,第i张车票上的时间是$t_i$, 求从$a$到$b$的最短时间,如果无法到达则输出“impossible” 解法: 考虑状态:“现在在城市$v ...

随机推荐

  1. 将258.369 double值转为内存表示(科学计数法)

    前言 庖丁解牛 - <<庄子>> 庖丁为文惠君解牛,手之所触, 肩之所倚, 足之所履, 膝之所踦, 砉然向然, 奏刀騞然, 莫不中音, 合于<桑林>之舞, 乃中&l ...

  2. 微信公 众平台开发,用于个人技术交流,有兴趣的加QQ群432921500

    微信公 众平台开发,用于个人技术交流,有兴趣的加QQ群432921500

  3. http协议与web本质

    当你在浏览器地址栏敲入“http://www.csdn.net/”,然后猛按回车,呈现在你面前的,将是csdn的首页了(这真是废话,你会认为这是理所当然的).作为一个开发者,尤其是web开发人员,我想 ...

  4. android 细节之 旋转动画

    Flip Animation for Android: 近期项目中用到了一个小动画,让物体实现一定的3D旋转效果,现记录例如以下: public class FlipAnimation extends ...

  5. <转载>CSS解决图片过大撑破DIV的方法

    DIV+CSS网页内容中如果插入大于DIV层宽度显示,过大的图片将会撑破网页宽度显示从而网页严重变形,您是否遇到过?这里DIVCSS5给大家介绍几种解决图片撑破撑开网页DIV层方法. 图片撑破宽度解决 ...

  6. Python 学习入门(22)—— 线程同步

    Python主要通过标准库中的threading包来实现多线程.在当今网络时代,每个服务器都会接收到大量的请求.服务器可以利用多线程的方式来处理这些请求,以提高对网络端口的读写效率.Python是一种 ...

  7. SSH反向连接让外网也可远程访问内网机器

    最近把树莓派折腾了一番,放在了家里,但是家里是内网,出门在外,不方便直接ssh上来,于是请教了秦兄,指点迷津,发现SSH反向链接可以实现这个功能. 1. ssh反向链接的概念 A主机:外网,ip:11 ...

  8. Oracle左连接、右连接示例

    建表: create table a ( id ), name ) ); create table b ( name ), age ) ); create table c ( name ), dept ...

  9. 基础知识(9)- Swing用户界面组件

    9.1 Swing和模型-视图-控制器设计模式  9.1.1 设计模式  9.1.2 模型-视图-控制器模式  9.1.3 Swing按钮的模型-视图-控制器分析 9.2 布局管理概述  9.2.1 ...

  10. iphone缩小uIImage图片

    UIImage的缩小 有时候,项目中,要用到上传图片,从图片库里取出的图片有的太大了,而要上传的时候,会很费时间,而且也没必要太大,所以就把图片综缩小一下,再传! #pragma UIImagePic ...