制限時間:1000msのメモリ制限:65536kも
合計提出:7844受理:2685
説明
フレディカエルは湖の真ん中に石の上に座っています。突然、彼は他の石の上に座っているフィオナカエルに気づきます。彼は彼女を訪問する予定ですが、水が汚れや観光客の日焼け止めに満ちているので、彼は水泳を避け、代わりにジャンプして、彼女に到達したいと考えています。
残念ながら、フィオナの石が彼のジャンプの範囲外です。したがって、フレディは中間停止など、他の石を使用して、いくつかの小さなジャンプのシーケンスによって彼女に到達すると考えています。
ジャンプの所定のシーケンスを実行するには、カエルのジャンプ範囲は明らかにシーケンスの中で最も長いジャンプoccuringと少なくとも同じ長さでなければなりません。
二つの石の間のカエルの距離が(ヒトはまた、ミニマックス距離それを呼び出す)従って二つの石の間のすべての可能な経路上最低限必要なジャンプ距離として定義されます。
あなたはフレディの石、フィオナの石、湖内の他のすべての石の座標を与えられています。あなたの仕事は、フレディさんとフィオナの石の間カエルの距離を計算することです。
入力
入力は、1つ以上のテストケースが含まれています。各テストケースの最初の行は、石の数N(2 <= N <= 200)を含むであろう。次のn行はそれぞれ石#iの座標を表す2つの整数XI、YI(0 <= XI、YI <= 1000)を含みます。ストーン#1は、フレディの石で、石#2は、フィオナの石、他のn-2石が占有されていないです。各テストケース以下の空白行があります。入力は、nはゼロ(0)の値によって終了されます。
出力
各テストケースについては、「シナリオ#X」、xはテストケースの数(これらは1から番号が付けられている)によって置換され、Yは、適当な実数で置き換えられている、「カエルの距離= Y」を言うラインを言うラインを印刷します、3桁に印刷されました。でも最後の後、各テストケースの後に空白行を入れてください。
サンプル入力
2
0 0
3 4
3
17 4
19 4
18 5
0
サンプル出力の
シナリオ#1
カエルの距離= 5.000
シナリオ#2
カエルの距離= 1.414
ソース
ウルムローカル1997
//
する#include < iostreamの >
の#include < cmath >
の#include < iomanip > 使用して名前空間 はstd; INT メイン(int型 ARGC、 CHAR * ARGV []){ int型の 石; ダブル B [ 201 ] [ 201 ]。int型 V [ 201 ] [ 2 ]。int型の C = 0 ; しばらく (CIN
>> 石 && 石が != 0 ) { ため (int型 I = 0 iは、 < 石; ++ I) CIN >> V [i]が[ 0 ] >> V [i]を[ 1 ]。 memset( &B、 0 、 はsizeof (b)参照)。以下のために (int型 のI = 0 ;私は < 石を; ++ I)のための (int型 J = I
+ 1 。J < 石。 ++ J) [J] [I]、B =の B [I] [J] = SQRT((ダブル)(V [i]が[ 0 ] - V [J] [ 0 ])* (V [i]が[ 0 ] - V [J] [ 0 ]) + (V [i]を[ 1 ] - V [J] [ 1 ]) * (V [i]を[ 1 ] - V [J] [ 1 ]))。用 (int型 のk = 0 ; K <
石; ++ K)
のための ( int型 I = 0を私は、 < 石; ++ i)がため (INT J = 0 ; J < 石; ++ j)の B [i]は[J] = 分(MAX(B [i]は[K]、B [k]は[J])、B [i]は[J])。 裁判所未満 << " シナリオ#" << ++ 、C << てendl; 裁判所未満 << " カエルの距離= " << 固定<< showpoint
<< てSetPrecisionは、( 3 ) << B [ 0 ] [ 1 ] << ENDL << ENDL。
}
戻り 0 。}
ます。https://www.cnblogs.com/asuran/archive/2009/09/30/1576789.htmlで再現