var n,count:longint; x,y:array[1..200] of longint; w:array[1..200,1..200] of real; f:array[1..200] of real; used:array[1..200] of boolean; function init:boolean; var i,j:longint; begin read(n); if n=0 then exit(false); for i:=1 to n do read(x[i],y[i]); for i:=1 to n do for j:=1 to n do w[i,j]:=sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j])); fillchar(used,sizeof(used),false); exit(true); end; function min(a,b:real):real; begin if a<b then exit(a) else exit(b); end; function max(a,b:real):real; begin if a>b then exit(a) else exit(b); end; procedure dijkstra(s:longint); var k,i,pos:longint; min2:real; begin for i:=1 to n do f[i]:=w[s,i]; used[s]:=true; for k:=1 to n-1 do begin min2:=maxlongint; for i:=1 to n do if (not used[i]) and (f[i]<min2) then begin min2:=f[i]; pos:=i; end; used[pos]:=true; for i:=1 to n do if not used[i] then f[i]:=min(f[i],max(f[pos],w[pos,i]));{状态转移方程} end; end; procedure main; begin dijkstra(1); writeln('Scenario #',count); writeln('Frog Distance = ',f[2]:0:3); end; begin count:=1; while true do begin if init then begin main; inc(count); end else break; end; end.
2253Frogger{dijkstra思想应用}{AC…
最新推荐文章于 2019-08-28 10:45:04 发布