【POJ - 2253】Frogger(floyd,或 部分瓶颈生成树的最大边)
題干:
湖中有n塊石頭,編號(hào)從1到n,有兩只青蛙,Bob在1號(hào)石頭上,Alice在2號(hào)石頭上,Bob想去看望Alice,但由于水很臟,他想避免游泳,于是跳著去找她。但是Alice的石頭超出了他的跳躍范圍。因此,Bob使用其他石頭作為中間站,通過(guò)一系列的小跳躍到達(dá)她。兩塊石頭之間的青蛙距離被定義為兩塊石頭之間所有可能路徑上的最小必要跳躍距離,某條路徑的必要跳躍距離即這條路徑中單次跳躍的最遠(yuǎn)跳躍距離。你的工作是計(jì)算Alice和Bob石頭之間的青蛙距離。
Input
多實(shí)例輸入?
先輸入一個(gè)整數(shù)n表示石頭數(shù)量,當(dāng)n等于0時(shí)結(jié)束。
接下來(lái)2-n+1行依次給出編號(hào)為1到n的石頭的坐標(biāo)xi , yi。
2 <= n <= 200?
0 <= xi , yi <= 1000
Output
先輸出"Scenario #x", x代表樣例序號(hào)。
接下來(lái)一行輸出"Frog Distance = y", y代表你得到的答案。?
每個(gè)樣例后輸出一個(gè)空行。
(ps:wa有可能是精度問(wèn)題,g++不對(duì)可以用c++嘗試,都不對(duì)就是代碼問(wèn)題)
Sample Input
2 0 0 3 43 17 4 19 4 18 50Sample Output
Scenario #1 Frog Distance = 5.000Scenario #2 Frog Distance = 1.414題目大意:
1為起點(diǎn),2為終點(diǎn),那么1~2的所有路徑,每條路徑的最大邊構(gòu)成一個(gè)邊集E,讓你求E中的最小值。
解題報(bào)告:
? 這題可以直接跑MST,然后當(dāng)1~2已經(jīng)連通的時(shí)候就break就行了,這時(shí)候得到的就是答案。
? 法二跑個(gè)floyd稍微修改一下也行。
AC代碼:
#include<cstdio> #include<iostream> #include<algorithm> #include<queue> #include<map> #include<vector> #include<set> #include<string> #include<cmath> #include<cstring> #define F first #define S second #define ll long long #define pb push_back #define pm make_pair using namespace std; typedef pair<int,int> PII; const int MAX = 2e2 + 5; double dis[MAX][MAX]; int x[MAX],y[MAX],n; void floyd() {for(int k = 1; k<=n; k++) {for(int i = 1; i<=n; i++) {for(int j = 1; j<=n; j++) {dis[i][j] = min(dis[i][j],max(dis[i][k],dis[k][j]));}}} } int main() {int iCase=0;while(~scanf("%d",&n) && n) {for(int i = 1; i<=n; i++)for(int j = 1; j<=n; j++) dis[i][j] = 999999999;for(int i = 1; i<=n; i++) {scanf("%d%d",x+i,y+i);for(int j = 1; j<i; j++) {dis[i][j] = dis[j][i] = sqrt((x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]));}} floyd();printf("Scenario #%d\n",++iCase);printf("Frog Distance = %.3f\n\n",dis[1][2]); }return 0 ; }?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的【POJ - 2253】Frogger(floyd,或 部分瓶颈生成树的最大边)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PSof1.exe - PSof1是什么
- 下一篇: pssvc.exe - pssvc是什么