Prim算法模版

来源:互联网 发布:网络销售周总结范文 编辑:程序博客网 时间:2024/06/06 17:18
{<Prim><O(N*N)>}const     maxn=10000;type    link=^node;    node=record x,dis:longint; next:link; end;var{data of prim}   g:array[1..maxn] of link;   dist:array[1..maxn] of longint;   v:array[1..maxn] of boolean;   n:longint;{connect line}procedure connect(i,x,dis:longint);var   p:link;begin     new(p);     p^.x:=x;     p^.dis:=dis;     p^.next:=g[i];     g[i]:=p;end;{upload i}procedure upload(i:longint);var   p:link;begin     v[i]:=true;     p:=g[i];     while p<>nil do begin           if (not v[p^.x])and(p^.dis<dist[p^.x]) then dist[p^.x]:=p^.dis;           p:=p^.next;     end;end;{function of mst}function mst:longint;var   i,j,k,min:longint;begin     for i:=1 to n do begin v[i]:=false; dist[i]:=maxlongint; end;     mst:=0; dist[1]:=0; upload(1);     for i:=2 to n do begin         min:=maxlongint;         for j:=2 to n do             if (not v[j])and(dist[j]<min) then begin                k:=j; min:=dist[j];             end;         upload(k); inc(mst,min);     end;end;

原创粉丝点击