POJ 2253

原创 2015年11月18日 22:20:44

题目大意:有只青蛙要跳到另外一只青蛙那里,路上有许多石头可以供青蛙跳,给出每段石头的坐标,求出青蛙每次要跳的最短距离,也就是说找到一条路径,使得路径上的每个点的距离都小于等于k,求这个最小的k。


思路:最短路径的变种。(网上另有一prim算法为解,并不懂==代码到是差不多)

d[i] 表示从原点到i的k值

dis[i][j]表示i到j的距离

用dijkstra算法 对于每个点更新一下d[i]=min(d[i],max(d[x],dis[x][i])就可以了


//用惯vector作为邻接链表的我,第一次写矩阵版的dijkstra居然不会写===。

原来是要贪心,计算当前最好的那个值

#include <iostream>
	#include <vector>
	#include <cstring>
	#include <iomanip>
	#include <math.h>
	#include <queue>
	#define N 1009
	#define INF 9999999
	using namespace std;
	int arr[N][2];
	double dis[N][N];
	double d[N];
	int n;
	double calc(int i,int j)
	{
		double q=(arr[i][1]-arr[j][1]);
		double t=(arr[i][0]-arr[j][0]);
		return double(sqrt(q*q+t*t));
	}
	int main()
	{
		int cnt=0;n=0;
		while(1)
		{
		
		cin>>n;
		if(n==0)break;
		for (int i=0;i<n;++i)
		{
			cin>>arr[i][0]>>arr[i][1];
			for (int j=0;j<i;++j)
				dis[i][j]=dis[j][i]=calc(i,j);
			dis[i][i]=0;
		}
		
		
		bool vis[N];
	    memset(vis, false, sizeof(vis));
	    
	    vis[0]=1;
	    
		for (int i=1;i<n;++i)d[i]=dis[0][i];
		d[0]=0;
		
		for (int i=0;i<n-1;++i)
		{
		  double temp=INF;int x=0;
		  for (int j=0;j<n;++j)if(!vis[j]&&temp>d[j])temp=d[x=j];
		  vis[x]=1;
		  for (int j=0;j<n;++j)
		  {
		  	if(vis[j])continue;
		  	d[j]=min(max(d[x],dis[x][j]),d[j]);	  	
		  };
	   }
	   
	   
		printf("Scenario #%d\nFrog Distance = %.3f\n\n",++cnt,d[1]);
	    }
		




POJ2253-Frogger【Floyd】

  • 2011年07月30日 01:53
  • 7KB
  • 下载

POJ 2253 Frogger(最短路变形)

题意:在笛卡尔坐标系内, 有若干个点,每个点互相可直达,求第一个点到第二个点所经过的最大边的最小情况。 解题思路:dijkstra变形, d[i]表示从s点到i点中的最大边。求解d[2]即可。 注意精...
  • qwe585p
  • qwe585p
  • 2015年09月17日 14:41
  • 327

POJ2253 && ZOJ1942

两种写法 用floyd算法,求所有点之间的最大跳的最小值,最后输出a[0][1],即起始与终止位置的最小值,采用传递闭包的思路,时间复杂度较高,但代码简单。 或者Dijkstru的变形,两点间的最短距...

POJ2253 Frogger 【Dijkstra】

Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26417   Accep...

poj2253

用Dijkstra做的,据说还可用Floyd、Prim等做,这以后再尝试了。开始用c++输入是16ms,改成c的输入就0ms。。。。这样的优化,有点囧。代码如下:#include #include ...

POJ 2253 - Frogger

参考:http://www.cnblogs.com/tanhehe/p/3169865.html 另外请参考:http://blog.csdn.net/PKU_ZZY/article/details/...
  • Freenm
  • Freenm
  • 2017年04月09日 21:39
  • 109

【POJ 2253】Frogger(Dijkstra)

DescriptionFreddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog...

最短路变形 POJ 2253 Frogger

这题也是最短路类的题目 但求的不是从一点到另一点的最短路径,而是求从起点到终点的所有的路径中每条路径上的最大边的最小值,好像有点拗口。。 其实这并没有难多少,只需要把dijstra的松弛过程改一下就可...

POJ2253

Problem: Frogger Description: 青蛙从A跳到B,中间可以借助多个石子,现在要你找一条从A到B的通路,使得这条通路上最大的跳跃距离在所有通路上的最大跳跃距离最小。 Sol...

poj 2253 frogger

题目衔接:http://poj.org/problem?id=2253 题解:求出图中两点所有路径中权值最大数中的最小值,即可简化为求最小生成树中的距离最大值 AC代码:Memor...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 2253
举报原因:
原因补充:

(最多只允许输入30个字)