POJ2253 Dijkstra演算法的變體的應用

2021-06-08 11:14:47 字數 843 閱讀 2106

題目大意求青蛙由起點跳到終點的過程中,在所有的路徑中的最大步伐中的最小步伐。題目簡單。用dijkstra演算法解,但並非是求最小路徑或最小路徑長度。這裡是dijkstra演算法的變體,結合貪心演算法的思想,在走每一步時,選取距離最小(即步伐最小)的那一步走,每一次走都是在上一步的基礎之上走的,用乙個變數u記錄每次通過的結點,再用乙個變數記錄已經走了的路徑中的最大步伐,當u等於終點結點的編號時,就停止,輸出最大步伐。詳細見**:

#include #include #include #include #include using namespace std;

const int maxn=202;

const int inf=2000;

int n;

double m;

bool visit[maxn];

double x[maxn],y[maxn],dist[maxn],w[maxn][maxn];

double length(double x1,double y1,double x2,double y2)

void dijkstra(int s,int t) //起點v,終點t

}int main()

memset(visit,0,sizeof(visit));

m=0;

dijkstra(0,1);

printf("scenario #%d\n",cas++);

printf("frog distance = %.3lf\n",m);

printf("\n");

}return 0;

}

POJ 2253(floyd 條件改變)

poj 2253 題意 有很多座標,求點一到點二的每個通路之中最長的距離,輸出最長的距離之中最短的那個。這道題無關最短路,利用floyd的遍歷,但是關鍵在於條件。include include includeusing namespace std double path 210 210 class ...

基礎最短路 二 POJ 2253

poj2253 青蛙跳 n為200。題意為 給出n個石頭,每個石頭給出他們的x和y座標。乙隻青蛙在這些石頭上面跳來跳去。但是青蛙跳躍能力有限。需要求的是,青蛙從石頭1跳到石頭2上,對他的跳躍能力要求最低為多少。也就是石頭1到石頭2路徑上,的最大邊,最小可以為多少。這裡dis陣列儲存的就不是原點到各點...

POJ 2253 Frogger(最大邊權最小化)

題意 給定 n nn 個點的座標 xi yi x i,y i xi y i 這 n nn 個點構成乙個無向完全圖。起點是 1 11 號,終點是 2 22 號。從起點到終點會有很多路徑,每條路徑上的邊都有乙個最大值,求這些最大值中的最小值。思路 dijkstra變形,d d d 陣列則代表從起始點到達...