Frogger
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 24979   Accepted: 8114

Description

Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sitting on another stone. He plans to visit her, but since the water is dirty and full of tourists' sunscreen, he wants to avoid swimming and instead reach her
by jumping. 

Unfortunately Fiona's stone is out of his jump range. Therefore Freddy considers to use other stones as intermediate stops and reach her by a sequence of several small jumps. 

To execute a given sequence of jumps, a frog's jump range obviously must be at least as long as the longest jump occuring in the sequence. 

The frog distance (humans also call it minimax distance) between two stones therefore is defined as the minimum necessary jump range over all possible paths between the two stones. 



You are given the coordinates of Freddy's stone, Fiona's stone and all other stones in the lake. Your job is to compute the frog distance between Freddy's and Fiona's stone. 

Input

The input will contain one or more test cases. The first line of each test case will contain the number of stones n (2<=n<=200). The next n lines each contain two integers xi,yi (0 <= xi,yi <= 1000) representing the coordinates of stone #i. Stone #1 is Freddy's
stone, stone #2 is Fiona's stone, the other n-2 stones are unoccupied. There's a blank line following each test case. Input is terminated by a value of zero (0) for n.

Output

For each test case, print a line saying "Scenario #x" and a line saying "Frog Distance = y" where x is replaced by the test case number (they are numbered from 1) and y is replaced by the appropriate real number, printed to three decimals. Put a blank line
after each test case, even after the last one.

Sample Input

2
0 0
3 4 3
17 4
19 4
18 5 0

Sample Output

Scenario #1
Frog Distance = 5.000 Scenario #2
Frog Distance = 1.414

Source

Ulm Local 1997

#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
double G[210][210];
int n;
struct Point{
double x,y;
}a[210];
float dist(Point a,Point b){
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
void dij(){
double dis[210];
int vis[210];
for(int i=1;i<=n;i++)
vis[i]=0;
vis[1]=1;
dis[1]=0.0;
for(int i=2;i<=n;i++)
dis[i]=G[1][i];
for(int i=1;i<n;i++){
double min=999999.0;
int v;
for(int j=2;j<=n;j++)
if(!vis[j] && dis[j]<min){
min=dis[j];
v=j;
}
vis[v]=1;
for(int j=1;j<=n;j++){
double tmp=(dis[v]<G[v][j] ? G[v][j] : dis[v]); //注意这里是最短路径变形
dis[j]= tmp<dis[j] ? tmp : dis[j];
}
}
cout<<setiosflags(ios::fixed)<<setprecision(3)<<dis[2]<<endl<<endl;
}
int main(){
int cas=1;
while(cin>>n&&n){
for(int i=1;i<=n;i++)
cin>>a[i].x>>a[i].y;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
G[i][j]=dist(a[i],a[j]);
cout<<"Scenario #"<<cas++<<endl;
cout<<"Frog Distance = ";
dij();
}
return 0;
}

最新文章

  1. GRU(Gated Recurrent Unit) 更新过程推导及简单代码实现
  2. 如何根据执行计划,判断Mysql语句是否走索引
  3. 黄聪:Discuz!X/数据库操作方法、DB::table、C::t
  4. android之自定义ViewGroup和自动换行的布局的实现
  5. 【网络流24题】 No.6 最长不减子序列问题 (最大流)[模型:最多不相交路径]
  6. Linux install Maven3
  7. 只有勇敢的人、鲁莽的人和绝望的人才会追求大的变革 – D.J. Anderson
  8. telnet模拟http訪问
  9. 提高数据库的查询速率及其sql语句的优化问题
  10. LinkedHashMap源码分析
  11. insert主键返回 selectKey使用
  12. Code signing is required for product type &#39;Application&#39; in SDK &#39;iOS 11.4&#39;
  13. MyBatis——模糊查询
  14. (转载)WinCC 卸载后 Simatic Shell 的删除
  15. Bluedroid协议栈BTU线程处理HCI数据流程分析
  16. 【Unity笔记】提示框ToolTips大小自适应,及其闪烁的问题
  17. Ubuntu Cannot run program &quot;../SDK/build-tools/xxx/aapt&quot;: erro = 2 No such file or directory
  18. 20145203Java实验报告四:Android开发基础
  19. PyQt4菜单栏
  20. 图像处理之直方图均衡化及C源码实现

热门文章

  1. 洛谷P3941入阵曲
  2. 安装zabbix监控系统
  3. Section One
  4. [BZOJ2226][SPOJ5971]LCMSum(莫比乌斯反演)
  5. 【贪心】【后缀自动机】XIII Open Championship of Y.Kupala Grodno SU Grodno, Saturday, April 29, 2017 Problem E. Enter the Word
  6. 【Trie】MIPT-2016 Pre-Finals Workshop, Taiwan NTU Contest, Sunday, March 27, 2016 Problem B. Be Friends
  7. 【高斯消元解xor方程组】BZOJ2466-[中山市选2009]树
  8. 【深搜+set使用学习】POJ3050-Hopscotch
  9. Java高级架构师(一)第32节:Nginx的进程结构、基本配置
  10. JAVA使用POI如何导出百万级别数据(转载)