题目意思:
一只青蛙从1号石头跳到2号石头,不能直接跳过去,需要借助其他的石头来跳,
求从1号石头到2号石头所有路径中的最大跳跃距离的最小值。
本题要点:
1、单源最短路径,dijkstra算法,裸题。
2、题目的点事以 坐标的形式给出,求出每两点之间的额距离,然后用 dijkstra 算法求出,以1
点为起点,终点是 2 点的最短距离 d[2]。注意,这里的最短距离,指的是路径上最大跳跃距离的最小值,
只需在原来的dijkstra 算法的代码改改即可。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <cmath>
using namespace std;
const int MaxN = 210;
const int MaxM = 40010;
int n, tot;
int head[MaxN], ver[MaxM], Next[MaxM];
double d[MaxN], edge[MaxM];
bool vis[MaxN];
struct Point
{
int x, y;
}points[MaxN];
void add(int x, int y, double z)
{
ver[++tot