p1372.pas

来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· PAS 代码 · 共 64 行

PAS
64
字号
PROGRAM P1372;

VAR
        n,m                             :Integer;
        dis                             :array[1..50,1..50]of Longint;

PROCEDURE Prim;
var
        min,ans                         :Longint;
        i,j,k                           :Integer;
       // closet                          :array[1..50]of Integer;
        mincost                         :array[1..50]of Longint;

begin
ans:=0;
for i:=1 to n do mincost[i]:=dis[1,i];
mincost[1]:=-1;
for i:=2 to n do
        begin
        min:=maxlongint;
        for j:=1 to n do
                if (mincost[j]>0)and(mincost[j]<min) then
                        begin
                        min:=mincost[j];
                        k:=j;
                        end;
        inc(ans,min);
        for j:=1 to n do
                if (mincost[j]>0)and(dis[k,j]<mincost[j]) then
                        mincost[j]:=dis[k,j];
        mincost[k]:=-1;
        end;
writeln(ans);
end;

PROCEDURE Readin;
var
        i,j,a,b,temp                    :Integer;
begin
for i:=1 to n do
        for j:=1 to n do dis[i,j]:=maxint;
for i:=1 to m do
        begin
        readln(a,b,temp);
        if (dis[b,a]>temp) then
                begin
                dis[b,a]:=temp;
                dis[a,b]:=dis[b,a];
                end;
        end;
end;

BEGIN
//assign(input,'p.in');
//reset(input);
read(n);
while (n<>0) do
        begin
        readln(m);
        Readin;
        Prim;
        read(n);
        end;
END.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?