SSL P1615 Frogger
来源:互联网 发布:乡村旅游数据统计 编辑:程序博客网 时间:2024/06/07 16:51
Description
Freddy一次能跳的距离必须至少和这一串石头间的距离最大的距离一样。因此,介于石头间的蛙跳距离定义为要从Freddy所在的石头跳到Fiona所在的石头的路径中,最小必须要跳的距离。给你Freddy所在的石头、Fiona所在的石头,以及湖中所有其它石头的坐标,你的任务是算出介于Freddy和Fiona所在石头间的蛙跳距离。
Input
输入含有多组测试数据。每组测试资料的第一列有1个整数n,代表石头的数目(2 <= n <= 200)。接下来的n列每列有2个整数xi,yi(0 <= xi,yi <= 1000)代表第i颗石头的坐标。其中第一颗为Freddy所在的石头,第二颗为Fiona所在的石头,其它的n-2颗石头上则是空的。
每组测试数据后有一空白列,当n=0时代表输入结束。请参考Sample Input。
Output
对每一组测试数据,输出一列这是第几组测试数据,以及一列蛙跳距离。
每组测试数据后亦输出一空白列。请参考Sample Output。
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
floyd:
1.勾股定理求出每一块石头到各个石头的距离。
2.如果从i到k和从k到j的距离都比直接从i到j小,那么从i到j每一步要跳的最小距离就是i到k和k到j中最大的值。
3.floyd。
var a:array [0..201,0..201] of extended; p,q:array [0..201] of longint; i,j,k,n,t:longint;begin t:=0; while not(eof) do begin fillchar(a,sizeof(a),0); fillchar(p,sizeof(p),0); fillchar(q,sizeof(q),0); readln(n); if n=0 then halt; for i:=1 to n do readln(p[i],q[i]); for i:=1 to n-1 do for j:=i+1 to n do begin a[i,j]:=sqrt((p[i]-p[j])*(p[i]-p[j])+(q[i]-q[j])*(q[i]-q[j])); a[j,i]:=a[i,j]; end; for k:=1 to n do for i:=1 to n-1 do for j:=i+1 to n do if (a[i,j]>a[i,k]) and (a[i,j]>a[k,j]) then if a[i,k]>a[k,j] then begin a[i,j]:=a[i,k]; a[j,i]:=a[i,k]; end else begin a[i,j]:=a[k,j]; a[j,i]:=a[k,j]; end; inc(t); writeln('Scenario #',t); writeln('Frog Distance = ',a[1,2]:0:3); writeln; end;end.
PRIM+dfs:
1.勾股定理求出每个点到各个点的距离。
2.PRIM。
3.dfs搜到Fiona所在的石头的路径找最大。
var a:array[0..201,0..201] of extended; g:array[0..201,0..201] of longint; x,y,v,b:array[0..201] of longint; n,p,k,i,j:longint; max:extended;procedure prim; var i,j,k,xy,pq:longint; min:extended; begin for k:=1 to n-1 do begin min:=maxlongint; for i:=1 to n do if v[i]=1 then for j:=1 to n do if (v[j]=0) and (min>a[i,j]) and (a[i,j]<>0) then begin min:=a[i,j]; xy:=i; pq:=j; end; if min<>maxlongint then begin v[pq]:=1; g[xy,pq]:=1; g[pq,xy]:=1; end; end; end;procedure dfs(i:longint); var j:longint; begin if i=2 then begin for j:=2 to p do if a[b[j],b[j-1]]>max then max:=a[b[j],b[j-1]]; exit; end; for j:=1 to n do if (v[j]=0) and (g[i,j]=1) then begin inc(p); b[p]:=j; v[j]:=1; dfs(j); v[j]:=0; dec(p); end; end;begin k:=0; while not(eof) do begin readln(n); if n=0 then halt; fillchar(v,sizeof(v),0); fillchar(g,sizeof(g),0); fillchar(a,sizeof(a),0); fillchar(b,sizeof(b),0); fillchar(x,sizeof(x),0); fillchar(y,sizeof(y),0); max:=0; for i:=1 to n do readln(x[i],y[i]); for i:=1 to n-1 do for j:=i+1 to n do begin a[i,j]:=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); a[j,i]:=a[i,j]; end; v[1]:=1; prim; fillchar(v,sizeof(v),0); p:=1; v[1]:=1; b[1]:=1; dfs(1); inc(k); writeln('Scenario #',k); writeln('Frog Distance = ',max:0:3); writeln; end;end.
- SSL P1615 Frogger
- P1615 友好城市
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- UIimage的缩放,马赛克处理,CVPixelBufferRef 转换为UIimage
- kafka集群部署以及java客户端测试
- 水题(I Can Guess the Data Structure!,UVA 11995)
- Nmon工具的使用以及通过nmon_analyse生成分析报表
- centos 安装 python3.4
- SSL P1615 Frogger
- Java四种线程池的使用
- SpringMvc常用依赖包
- AndroidStudio 内存泄露调试及MAT工具综合使用
- 开源工程学习笔记之Fastjson(Part 1)
- java实现冒泡法排序
- 使用Lufylegend开发HTML5 Canvas游戏
- Android 6.0权限
- PHP内容连注释一起展示到网页上的解决办法