題目大意求青蛙由起點跳到終點的過程中,在所有的路徑中的最大步伐中的最小步伐。題目簡單。用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 陣列則代表從起始點到達...