记录编号 79428 评测结果 AAAAAAAAAA
题目名称 [USACO Mar08] 麻烦的干草打包机 最终得分 100
用户昵称 GravatarC语言入门 是否通过 通过
代码语言 Pascal 运行时间 0.035 s
提交时间 2013-11-05 18:01:59 内存使用 1.24 MiB
显示代码纯文本
program baler;
var
n,xt,yt,i,k,k1,s,w,j:longint;
zs:real;
p:array [1..1050,1..1050] of boolean;
x,y,f,z:array [0..1050] of longint;
r:array [0..1050] of real;
pd:array [0..1050] of boolean;
begin
 assign (input,'baler.in');
 assign (output,'baler.out');
 reset (input);
 rewrite (output);
 fillchar (p,sizeof(p),false);
 fillchar (pd,sizeof(pd),true);
 readln (n,xt,yt);
 for i:=1 to n do
  begin
   readln (x[i],y[i],r[i]);
   if (x[i]=0)and(y[i]=0) then k:=i;
   if (x[i]=xt)and(y[i]=yt) then k1:=i;
  end;
 for i:=1 to n-1 do
  for j:=i+1 to n do
   if sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j]))-r[i]-r[j]<=0.000001 then
    begin
     p[i,j]:=true;
     p[j,i]:=true;
    end;
 s:=1;
 w:=2;
 z[s]:=k;
 f[s]:=0;
 pd[k]:=false;
 while (s<>w)and(pd[k1]) do
  begin
   for i:=1 to n do
    if (p[z[s],i])and(pd[i]) then
     begin
      z[w]:=i;
      f[w]:=s;
      pd[i]:=false;
      if i=k1 then break;
      inc(w);
     end;
   inc(s);
  end;
 zs:=0;
 while w<>0 do
  begin
   zs:=zs+r[k]*10000/r[z[w]];
   w:=f[w];
  end;
 write (zs:0:0);
 close (input);
 close (output);
end.