Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. vector<pair<int,int>> yoyo;
  4. int x=1;
  5. bool f[205]={0};
  6. int a;
  7. int dis(int i,int j){
  8. int dx = yoyo[i].first-yoyo[j].first;
  9. int dy = yoyo[i].second-yoyo[j].second;
  10. return dx*dx + dy*dy;
  11. }
  12. void run(int c,int b){
  13. if(f[c]==1)return;
  14. else{
  15. f[c]=1;
  16. for(int i=0;i<a;i++){
  17. if(i!=c&&dis(c,i)<=b){
  18. run(i,b);
  19. }
  20. }
  21. }
  22. }
  23. bool solve(int b){
  24. fill(f,f+a,0);
  25. run(0,b);
  26. if(f[a-1])return true;
  27. else return false;
  28. }
  29. int main(){
  30. while(cin>>a){
  31. if(a!=0){
  32. yoyo.clear();
  33. for(int i=0;i<a;i++){
  34. int b;
  35. int c;
  36. cin>>b>>c;
  37. yoyo.push_back({b,c});
  38. }
  39. int maxs=0;
  40. for(int i=0;i<a;i++){
  41. for(int j=0;j<a;j++){
  42. if(dis(i,j)>maxs){
  43. maxs=dis(i,j);
  44. }
  45. }
  46. }
  47. int l=-1;
  48. int h=maxs;
  49. while(l!=h-1){
  50. bool k=solve((h+l)/2);
  51. if(k)h=(h+l)/2;
  52. else l=(h+l)/2;
  53. cout<<l<<" "<<h<<endl;
  54. }
  55. double ans=sqrt(h);
  56. cout<<"Scenario #"<<x<<endl;
  57. cout<<"Frog Distance = ";
  58. printf("%.3f\n\n",ans);
  59. x++;
  60. }
  61. else break;
  62. }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement