二分答案为啥不行啊

UVA534 Frogger

二分答案可以,只是没有题解写 ```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


|