网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月14日漏签0天
wikioi吧 关注:1,286贴子:4,437
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1回复贴,共1页
<<返回wikioi吧
>0< 加载中...

求助 最小生成树

  • 只看楼主
  • 收藏

  • 回复
  • bug_ray
  • 普及三等
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
代码怎么试都没错啊,怎么只得40分,求帮助
type edge=record prev,endv,weight:longint; end;var elist:array[1..10000] of edge; g:array[1..100,1..100] of longint; i,j,n,p,min,tot,k,m:longint; t:edge;begin readln(n); {把图存入邻接矩阵} for i:=1 to n do begin for j:=1 to n do g[i,j]:=maxlongint; end; for i:=1 to n do begin for j:=1 to n do begin read(g[i,j]); end; end; {for i:=1 to n do begin for j:=1 to n do begin write(fo,g[i,j],' '); end; writeln(fo); end;} {建立边集数组,边集数组储存最小生成树用prim算法} {边集数组初始化,从顶点1开始,表示出顶点一到其他各顶点的权} for i:=1 to n-1 do {n各顶点的最小生成树有n-1条边} begin elist[i].prev:=1; elist[i].endv:=i+1; elist[i].weight:=g[1,i+1] end; k:=1;{生成第k边} while k<=n-1 do begin min:=maxlongint; m:=k; for j:=k to n-1 do begin if elist[j].weight<min then begin min:=elist[j].weight; m:=j; end else; end; if m<>k then begin t:=elist[k]; elist[k]:=elist[m]; elist[j]:=t; end else; j:=elist[k].endv;{j为新加入的顶点} {更新已有顶点到剩余其他顶点的最短距离} for i:=k+1 to n-1 do begin if g[j,elist[i].endv]<elist[i].weight then begin elist[i].prev:=j; elist[i].weight:=g[j,elist[i].endv]; end else; end; inc(k); end; tot:=0; for i:=1 to n-1 do begin inc(tot,elist[i].weight); end; writeln(tot); end.


  • bug_ray
  • 普及三等
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
type
edge=record
prev,endv,weight:longint;
end;
var
g:array[1..100,1..100] of longint;
a:array[1..10000] of edge;
i,j,n,tot:longint;
procedure prim(k:longint);
var
i,j,min:longint;
t:edge;
begin
min:=maxlongint;
for i:=k to n-1 do
begin
if a[i].weight<min
then
begin
min:=a[i].weight;
j:=i;
end
else;
end;
if j<>k
then
begin
t:=a[k];
a[k]:=a[j];
a[j]:=t;
end
else;
j:=a[k].endv;
for i:=k+1 to n do
begin
if a[i].weight>(g[j,a[i].endv])
then
begin
a[i].prev:=j;
a[i].weight:=g[j,a[i].endv];
end
else;
end;


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回wikioi吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示