剑鱼行动
Time Limit:10000MS Memory Limit:65536K
Total Submit:90 Accepted:77
Case Time Limit:1000MS
Description
给出N个点的坐标,对它们建立一个最小生成树,代价就是连接它们的路径的长度,现要求总长度最小。N的值在100以内,坐标值在[-10000,10000].结果保留二位小数
Input
5 ---------------5个点
0 0 ---------------5个点点的坐标
0 1
1 1
1 0
0.5 0.5
Output
2.83
Sample Input
Sample Output
Source
zju
var
a:array [0..101,0..101] of extended;
v:array [0..101] of longint;
x,y:array [0..101] of extended;
i,j,k,n,t,p,q:longint;
min,ans:extended;
begin
readln(n);
for i:=1 to n do
begin
readln(x[i],y[i]);
v[i]:=i;
end;
for i:=1 to n do
for j:=1 to n do
if i<>j then a[i,j]:=sqrt(abs(x[i]-x[j])*abs(x[i]-x[j])+abs(y[i]-y[j])*abs(y[i]-y[j]));
for k:=1 to n-1 do
begin
min:=maxlongint;
for i:=1 to n do
for j:=1 to n do
if (v[i]<>v[j]) and (a[i,j]<min) and (a[i,j]<>0) then begin
min:=a[i,j];
p:=j;
q:=i;
end;
ans:=ans+min;
t:=v[p];
for i:=1 to n do if v[i]=t then v[i]:=v[q];
end;
writeln(ans:0:2);
end.
2559

被折叠的 条评论
为什么被折叠?



