二分答案可以,只是没有题解写
```cpp
#include<bits/stdc++.h>
using namespace std;
const double eps=1e-5;
int n,T,G[205][205],vis[205];
double x[205],y[205];
void dfs(int x){vis[x]=1;for(int y=1;y<=n;y++) if(G[x][y]&&!vis[y]) dfs(y);}
bool chk(double mid){
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
G[i][j]=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])<=mid*mid;
}
}
dfs(1);
return vis[2];
}
int main(){
while(cin>>n&&n){
for(int i=1;i<=n;i++) cin>>x[i]>>y[i];
double l=0,r=2000;
while(r-l>eps){
double mid=(l+r)/2;
if(chk(mid)) r=mid;
else l=mid;
}
cout<<"Scenario #"<<++T<<"\n"<<"Frog Distance = "<<fixed<<setprecision(3)<<l<<"\n\n";
}
return 0;
}
```
by rhn7 @ 2024-03-04 21:09:21