POJ 2253 Frogger

题意:给出n个坐标,一只青蛙在坐标1,它要跳到坐标2的位置,问每一次跳的最近的距离是多少。保留3位小数。

给出n个点的坐标,可以构造出一张强连通图。主要思想是Dijkstra,那么可以这样想,
设ans是最短的跳跃距离;
第一步:从点1 到其余没走过的点,找最短距离的点t1,记录最短距离m1,更新ans,并把点t1标记为走过。如果t1是点2 的话那么1-2的最短距离就是ans记录并退出,否则以点t1为中介点,更新其余各点到点1的距离;
第二步:从点1 到其余没走过的点,找最短距离的点t2,记录最短距离m2,更新ans,并把点t2标记为走过。如果t2是点2 的话那么1-2的最短距离就是ans记录并退出,否则以点t2为中介点,更新其余各点到点1的距离;
第三步:…

最多会循环n次,就会找点2.如果中间某一次找到了直接输出ans就行了。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<set>
#include<map>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
#define inf 0x3f3f3fint x[210],y[210];
int n;
double mapp[210][210];
void Dij()
{bool vis[210];//标记数组double d[210];//点1到其余个点的距离double ans=0;//最短的一次跳跃距离memset(vis,0,sizeof(vis));for(int i=1; i<=n; i++)d[i]=mapp[1][i];vis[1]=1;for(int i=2; i<=n; i++){int t;double m=inf;// 每次寻找从1到各个节点的最短路径,然后根据这个最短路径再去松弛其他点的路径,//因为总共会松弛n次节点,所有2号节点可以 1,出现在松弛的过程中;2出现在最后一次松弛。//总之在松弛完全所有节点之前,一定会找到2号节点。for(int j=2; j<=n; j++)if(!vis[j] && d[j]<m){m=d[j];t=j;}ans=max(ans,m);vis[t]=1;if(t==2){printf("%.3f\n\n",ans);return;}for(int j=2; j<=n; j++){if(!vis[j] && d[j]>mapp[t][j])d[j]=mapp[t][j];}}//printf("%.3f\n\n",ans);
}
int main()
{int cc=1;while(scanf("%d",&n)!=EOF,n){memset(mapp,0,sizeof(mapp));for(int i=1; i<=n; i++)scanf("%d%d",&x[i],&y[i]);for(int i=1; i<=n; i++){for(int j=1; j<=n; j++){//构造连通图mapp[i][j]=mapp[j][i]=sqrt( (x[i]-x[j])*(x[i]-x[j])*1.0+(y[i]-y[j])*(y[i]-y[j])*1.0 );}}printf("Scenario #%d\n",cc++);printf("Frog Distance = ");Dij();}return 0;
}


POJ 1797 Heavy Transportation

题意:有n个点和m条边。每个边有承受的最大容量,找一条路径,使得这条路径的容量最大。

这道题和上面的思路和方法是一样的,所以直接就放在一起了。不说多直接上代码。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<set>
#include<map>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
#define inf 0x3f3f3fint n,m;
int mapp[1100][1100];
void Dij()
{bool vis[1100];//标记数组int d[1100];//点1到个点的距离int ans=inf;//最大容量memset(vis,0,sizeof(vis));memset(d,0,sizeof(d));for(int i=1; i<=n; i++)d[i]=mapp[1][i];vis[1]=1;for(int i=2; i<=n; i++){int mm=0;int t;for(int j=2; j<=n; j++)if(!vis[j] && mm<d[j]){mm=d[j];t=j;}ans=min(ans,mm);vis[t]=1;if(t==n){printf("%d\n",ans);return;}for(int j=2; j<=n; j++){if(!vis[j] && d[j]<mapp[t][j]){d[j]=mapp[t][j];}}}printf("%d\n",ans);
}
int main()
{int t;int cc=1;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);memset(mapp,0,sizeof(mapp));for(int i=1; i<=m; i++){int x,y,c;scanf("%d%d%d",&x,&y,&c);if(mapp[x][y]<c)mapp[x][y]=mapp[y][x]=c;}printf("Scenario #%d:\n",cc++);if(n==1)printf("0\n");elseDij();printf("\n");}return 0;
}

转载于:https://www.cnblogs.com/zzulipomelo/p/5384951.html

POJ 2253 1797相关推荐

  1. B - Frogger POJ - 2253

    B - Frogger POJ - 2253 题意: 从 1 号点出发,找每一条能够到达 2 号点的路径,每条路径的答案是该路径中相邻两点之间距离的最大值,求这些答案中的最小值. 思路: 感觉不是最短 ...

  2. 【POJ No. 1797】重型运输 Heavy Transportation

    [POJ No. 1797]重型运输 Heavy Transportation POJ题目地址 [题意] Hugo需要将巨型起重机从工厂运输到他的客户所在的地方,经过的所有街道都必须能承受起重机的重量 ...

  3. POJ 2253 Frogger(floyd dijkstra spfa)

    题目链接:http://poj.org/problem?id=2253 题目: 弗雷迪青蛙正坐在湖中央的一块石头上. 突然,他注意到正坐在另一块石头上的菲奥娜青蛙. 他打算去看望她,但由于水很脏,游客 ...

  4. [kuangbin带你飞]专题四 最短路练习 B( POJ 2253) Frogger(spfa)

    B - Frogger(spfa) 题目链接:https://vjudge.net/contest/66569#problem/B 题目: Freddy Frog is sitting on a st ...

  5. POJ 2253 Frogger(最短路 Floyd)

    Frogger 大意: 给出两个青蛙的坐标和其他n-2个石头的坐标,任一两个坐标点间都是双向连通的.现在要求求出所有通路的最大距离,并把这些最大距离作比较,把最小的一个最大距离作为青蛙的最小跳远距离. ...

  6. POJ 2253 Frogger(最短路Floyd)题解

    题意:想给你公青蛙位置,再给你母青蛙位置,然后给你剩余位置,问你怎么走,公青蛙全力跳的的最远距离最小. 思路:这里不是求最短路径,而是要你找一条路,青蛙走这条路时,对他跳远要求最低.这个思想还是挺好迁 ...

  7. 【POJ - 2253】Frogger(floyd,或 部分瓶颈生成树的最大边)

    题干: 湖中有n块石头,编号从1到n,有两只青蛙,Bob在1号石头上,Alice在2号石头上,Bob想去看望Alice,但由于水很脏,他想避免游泳,于是跳着去找她.但是Alice的石头超出了他的跳跃范 ...

  8. POJ 2253 Frogger (求某两点之间所有路径中最大边的最小值)

    题意:有两只青蛙,a在第一个石头,b在第二个石头,a要到b那里去,每种a到b的路径中都有最大边,求所有这些最大边的最小值. 思路:将所有边长存起来,排好序后,二分枚举答案. 时间复杂度比较高,344m ...

  9. poj 2253 最短路变形——最大边的最小值

    文章目录 本题:最短路变形--最大边的最小值 最短路变形--最小边的最大值 本题:最短路变形--最大边的最小值 题意: 给出两只青蛙.以及其他石头的坐标,需要求出可以到达另一只青蛙的所有路径中,青蛙跳 ...

  10. POJ 图论---1_Uriel's Corner Uriel's Coding Learning Cubing Zone

    原文地址: http://www.cppblog.com/Uriel/articles/121814.html 内容: 刚开始学图论不久,这个是自己做过的一点图论水题,不一定全,有什么错误或者大家有其 ...

最新文章

  1. linux tmux离线安装,linux环境下安装tmux
  2. 读取properties文件
  3. python自动化办公:邮件篇 (定时邮件问候女票so easy)
  4. 拼接的html点击事情不触发,关于在vue中拼接html的问题,点击事件无法执行
  5. JAVA继承类phone_【Java基础】类-----继承
  6. 两幅二值图像叠加_【显微视界】光照不均匀图像分割技巧1——分块阈值
  7. java day55【 Mybatis 连接池与事务深入 、 Mybatis 的动态 SQL 语句、 Mybatis 多表查询之一对多 、 Mybatis 多表查询之多对多】...
  8. 通过url链接登录其他系统
  9. Unity中的资源管理-资源类型和基本使用
  10. 星计划--Python内置对象之旅(3)(列表)
  11. 如何对开发团队的人员进行绩效管理?
  12. 小白玩转自媒体推广引流今日头条开通原创视频
  13. http、https 等 常用默认端口号
  14. Git 上传代码到github上
  15. 嫦娥探月数据公布:高清真彩色月面图像首公开
  16. 安卓线程同步面试_Android 面试主题集合整理
  17. 空气温湿度远程监控手机APP远程监控
  18. 如何提高Wi-Fi速度:14种方法让网速提10倍!
  19. 电子商务作业2:电子支付工具
  20. br标签之不同浏览器

热门文章

  1. 百度网盘也能BT下载ED2K
  2. eclipse中如何搜索带\的字串
  3. 辛辛苦苦做了几天白忙活,错在哪里?
  4. 空间如何超越极小而存在
  5. 喜庆访问量达到10万
  6. WINDOWS10更改主题
  7. linux信号常用函数
  8. 系统调用之Write
  9. pydobc连接sql server_python – PyOdbc无法连接到SQL Server实例
  10. 拍照尺寸 ios_即将收费!11款价值80元iOS限免应用,全部免费下载