基礎最短路 二 POJ 2253

2021-07-28 20:14:57 字數 905 閱讀 6567

poj2253 青蛙跳 :

n為200。

題意為: 給出n個石頭, 每個石頭給出他們的x和y座標。

乙隻青蛙在這些石頭上面跳來跳去。但是青蛙跳躍能力有限。

需要求的是,青蛙從石頭1跳到石頭2上,對他的跳躍能力要求最低為多少。

也就是石頭1到石頭2路徑上,的最大邊,最小可以為多少。

這裡dis陣列儲存的就不是原點到各點的最短路,而是對青蛙而言,到達這個點所需要的最低跳躍距離。

每次跳躍過程中  ,更新、鬆弛 點的時候, 在 起點和 邊權  之間選擇較大的,然後更新值的時候  選取較小的。

結尾要多換一行!!!

說起來麻煩一點,看**吧。

核心**就一句。

基礎最短路一裡面用了已經會的dijkstra,這次使用spfa,沒什麼差別的。核心就在鬆弛那句話。

spfa:

#include"cstdio"

#include"iostream"

#include"cstring"

#include"algorithm"

#include"vector"

#include"cmath"

#include"queue"

using namespace std;

#define inf 99999999

#define inf 1009

#define loop(x,y,z) for(x=y;xq;

struct node

};vectoredge[inf];

double cal(int i,int j)

void init()

void spfa()}}

}}int main()

return 0;

}

poj 2253 二分 最短路

題意 a青蛙要去b青蛙所在的石頭,湖面上共有n個石頭,a在0,b在1,a到b可以跳到其它石頭上,要求到b的路程中,跳的最遠的一次?使這個最大距離最小。分析 雖然在最短路的題目裡看到這個題,不過讀完題我就想到了二分答案 並查集判聯通,二分最大距離,然後把不大於這個距離的邊的兩點放到乙個集合裡,最後判斷...

poj 2253 最短路變形 最大邊的最小值

題意 給出兩隻青蛙 以及其他石頭的座標,需要求出可以到達另乙隻青蛙的所有路徑中,青蛙跳躍距離的最小值 每一種路徑中 青蛙的跳躍距離又是不同的,需要看這條路徑中需要跳躍的最長距離 input 輸入將包含乙個或多個測試用例。每個測試用例的第一行將包含石頭數量n 2 n 200 下n行各包含兩個整數xi,...

POJ 2253 Frogger 最短路小變形

傳送門 參考 題意 給出乙個無向圖,求一條從 1 到 2 的路徑,使得路徑上的最大邊權最小 思路 dij將距離更新改成取最大值即可,即dis i 表示到達i點過程中的最大邊權,更新後可能多個,再靠優先佇列取出最小的最大邊權。include include include include includ...