最小生成树kruscal+并查集
来源:互联网 发布:淘宝如何寻找货源 编辑:程序博客网 时间:2024/04/28 17:54
program as;type t1 =record x,y,h :longint;end;var n,m,s,i:longint; a :array[1..1000000] of t1; f :array[0..1000000] of longint; bool :array[1..1000,1..1000] of boolean; sum :longint; totel :longint;function find(x:longint):longint;begin if x<>f[x] then begin f[x]:=find(f[x]); exit(f[x]); end else exit(x);end;procedure kuai(l,r:longint);var i,j,x :longint; y :t1;begin i:=l; j:=r; x:=a[(l+r) div 2].h; repeat while a[i].h<x do inc(i); while a[j].h>x do dec(j); if i<=j then begin y:=a[i]; a[i]:=a[j]; a[j]:=y; inc(i); dec(j); end; until i>j; if i<r then kuai(i,r); if l<j then kuai(l,j);end;procedure duru;var i,j,x1 :longint;begin read(n); s:=0; fillchar(a,sizeof(a),0); fillchar(bool,sizeof(bool),true); for i:=1 to n do for j:=1 to n do begin read(x1); if (i<>j)and(bool[i,j]) then begin inc(s); a[s].x:=i; a[s].y:=j; a[s].h:=x1; bool[i,j]:=false; bool[j,i]:=false; end; end;end;procedure kruscal;var x,y,i,j :longint;begin for i:=1 to s do f[i]:=i; for i:=1 to s do begin x:=find(a[i].x); y:=find(a[i].y); if x<>y then begin f[x]:=y; inc(sum,a[i].h); inc(totel); end; if totel=n-1 then exit; end;end;begin duru; kuai(1,s); kruscal; writeln(sum);end.
1 0
- 最小生成树kruscal+并查集
- Kruscal算法+并查集 求解最小生成树
- Kruscal算法 并查集求解最小生成树
- 并查集 求解最小生成树 Kruscal算法
- 并查集及其应用——kruscal法求最小生成树
- POJ 2421 Constructing Roads 最小生成树 kruscal+并查集
- HDUOJ 1232 (Kruscal最小生成树+并查集维护)
- hihoCoer 1098 : 最小生成树二·Kruscal算法 (并查集)
- 并查集+Kruscal最小生成树; 温习了一下并查集, 同时又对静态数组的动态使用体会了一下;.
- 最小生成树 Kruscal
- 最小生成树~kruscal
- 最小生成树-kruscal
- hdu3367(并查集+kruscal)
- kruscal最小生成树算法
- kruscal求最小生成树
- 最小生成树-Kruscal算法
- 最小生成树 prim kruscal
- 最小生成树之KRUSCAL
- Ubuntu下tftp服务搭建
- 《豆美人》(散文一篇,与君共赏)
- PHP实现协程
- C++ bind详解
- android开发 - OOM (Out Of Memory)
- 最小生成树kruscal+并查集
- C. Ilya and Sticks(Codeforces Round #297 (Div. 2) 水题)
- 2015年3月份推荐的书(自己这个月看过的书感觉还可以)
- velt-0.1.7开发: KernelConfig的问题
- IOS屏幕适配
- android开发 - OOM 简单 的 解决方法
- 左右布局
- 解决下载Android Build-tools 19.1.0失败
- 玩六合彩的同学请加群,439947402