⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kruskal算法:(贪心).txt

📁 Kruskal算法:(贪心)
💻 TXT
字号:
按权值递增顺序删去图中的边,若不形成回路则将此边加入最小生成树。
function find(v:integer):integer; {返回顶点v所在的集合}
 var i:integer;
 begin
   i:=1;
   while (i<=n) and (not v in vset[i]) do inc(i);
   if i<=n then find:=i else find:=0;
 end;

procedure kruskal;
 var
   tot,i,j:integer;
 begin
   for i:=1 to n do vset[i]:=[i];{初始化定义n个集合,第I个集合包含一个元素I}
p:=n-1; q:=1; tot:=0; {p为尚待加入的边数,q为边集指针}
sort;
{对所有边按权值递增排序,存于e[I]中,e[I].v1与e[I].v2为边I所连接的两个顶点的序号,e[I].len为第I条边的长度}
   while p>0 do begin
     i:=find(e[q].v1);j:=find(e[q].v2);
     if i<>j then begin
       inc(tot,e[q].len);
       vset[i]:=vset[i]+vset[j];vset[j]:=[];
       dec(p);
     end;
     inc(q);
   end;
   writeln(tot);
 end;

⌨️ 快捷键说明

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