记录编号 |
79428 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Mar08] 麻烦的干草打包机 |
最终得分 |
100 |
用户昵称 |
C语言入门 |
是否通过 |
通过 |
代码语言 |
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.