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...