poj -2253 Frogger 最短路算法之dijkstra 算法

题意:第一个点是青蛙的坐标,第二个是青蛙妹子的坐标,其他的点是石头的坐标,现在要问青蛙到青蛙妹子的地方,至少需要跳的最大距离,不是最短路问题,路可以很长,跳的石头很多,要求是跳的最大距离,最小(理解好!!!)

代码如下:(这是最短路的做法)

#include
#include
#include
#include
#include
#define ll long long
#define db double
using namespace std;
#define INF 99999999
const int maxn=205;
db maze[maxn][maxn],low[maxn],sh;
int ca[maxn][2],vis[maxn];
int n;

void dijkstra()
{
    for(int i=0;ilow[j]){
                minn=low[j],u=j;
            }
        }
        vis[u]=0;
        for(int j=0;j

还可以用最小生成树做,这种方法异常巧妙.把所有的点的距离都算出来然后根据距离的长短排个序,从小到大的一次连接起来,每连一次就判断下青蛙是否和妹子相遇,如相遇则输出连的那个长度.哇,这种方法才是最好的.

代码如下:

//哇,这个方法才是真的又好敲,又好巧.!
#include
#include
#include
#include
#include
#define CLR(x) memset(x,0,sizeof(x))
#define ll long long int
#define db double
using namespace std;
const int maxn=205;
int pre[maxn];
db cal[maxn][2];
int cas=1;
struct point
{
    int x,y;
    db dis;
}s[maxn*maxn];

void init()
{
    for(int i=0;i

你可能感兴趣的:(poj -2253 Frogger 最短路算法之dijkstra 算法)