pascal 优化的最小生成树算法 wikioi 1078 最小生成树 pascal 标程及解释...

PASCAL \u6700\u5c0f\u751f\u6210\u6811

\u592a\u6c34\u4e86
\u5c06\u662f\u5426\u5efa\u53d1\u7535\u7ad9\u770b\u505a\u7b2cN+1\u4e2a\u9876\u70b9V\uff0c\u8be5\u70b9\u5230\u5404\u77ff\u4e95\u9876\u70b9\u90fd\u6709\u8fb9\uff0c\u6743\u503c\u8868\u793a\u5efa\u8bbe\u8d39\u3002\u8fd9\u6837\u4e0e\u539f\u6765\u5404\u77ff\u4e95\u7684\u4e4b\u95f4\u7684\u8f93\u9001\u8d39\u6784\u6210\u4e86\u4e00\u4e2aN+1\u4e2a\u9876\u70b9\u7684\u56fe\u3002\u5229\u7528\u6700\u5c0f\u751f\u6210\u6811\u6c42\u51fa\u603b\u8d39\u7528\u5373\u53ef\u3002\uff08prim\u7b97\u6cd5\uff09
\u6cfd
\u5c31\u662f\u628aprim\u7b97\u6cd5\u7684d\u7684\u9ed8\u8ba4\u503c\u4ecemaxlongint\u6539\u4e3a\u5efa\u7535\u5382\u8d39\u7528
var n,i,j,k,l,m,min,an:longint;
a:array[1..300,1..300]of longint;
b,d:array[1..300]of longint;
c:array[1..300]of boolean;
begin
assign(input,'mine.in');
reset(input);
assign(output,'mine.out');
rewrite(output);
readln(n);
k:=maxlongint;
for i:=1 to n do
readln(b[i]);
for i:=1 to n do
begin
for j:=1 to n do
read(a[i,j]);
readln;
end;
for i:=1 to n do
d[i]:=b[i];
for i:=1 to n do
begin
min:=maxlongint;
for j:=1 to n do
if (not(c[j]))and(d[j]<min) then begin
min:=d[j];
l:=j;
end;
c[l]:=true;
inc(an,min);
for j:=1 to n do
if (not(c[j]))and(a[j,l]<d[j]) then
d[j]:=a[j,l];
end;
writeln(an);
close(input);
close(output);
end.

program internet;
var
i,j,m,n,ans,k:longint;
d:array [1..300] of longint;
a:array [1..300,1..300] of longint;
begin
readln(n);
for i:=1 to n do
begin
for j:=1 to n do
read(a[i,j]);
readln;
end;
for i:=1 to n do d[i]:=a[1,i];
for i:=1 to n-1 do
begin
m:=maxlongint;
for j:=1 to n do
if (d[j]0)and(d[j]<m) then begin m:=d[j];k:=j; end;
inc(ans,d[k]);d[k]:=0;
for j:=1 to n do
if a[k,j]<d[j] then d[j]:=a[k,j];
end;
write(ans);
end.

\u7ecf\u5178\u7684prim\u7b97\u6cd5\uff0c\u671b\u91c7\u7eb3
\u8fd9\u4e2a\u6d4b\u8bd5\u6570\u636e\u7edd\u5bf9\u80fd\u8fc7\uff0c\u8fd9\u4e2a\u7a0b\u5e8f\u6211\u5df2\u7ecf\u6d4b\u8fc7\u4e86

怎么不行,O(n*n){Prim)是不会超时的,楼上的回答真是不负责啊……
堆+Prim(不是dijkstra,只是像而已)的效率是O((n+m)log(n))
另外那个是Kruskal吗,是的话,效率是O(mlog(m)))
换言之,这些会超时的。

果楼主不怕麻烦……可以去百度文库上搜索克鲁斯卡尔(Kruskal)算法或者是普利姆(Prim)算法。都还不错的……

堆(线段树)+dijkstra

扩展阅读:免费ppt生成器 ... ai生成ppt入口 ... 免费ai智能写作一键生成 ... 免费ppt模板大全 ... 一键生成ppt ... 免费生成ppt的ai软件 ... ai自动生成ppt的网站 ... 开题报告ai生成免费 ... 免费ai写作入口 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网