最小生成树kruscal+并查集

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;:longint;f[x]:=find(f[x]);exit(f[x]);(x);end;;var i,j,x:longint; y:t1;begin i:=l; j:=r; x:=a[(l+r) div 2].h; repeatwhile a[i].h<x do inc(i);while a[j].h>x do dec(j);if i<=j thenbeginy:=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;i,j,x1 :longint;begin read(n); s:=0; fillchar(a,sizeof(a),0); fillchar(bool,sizeof(bool),true); j:=(x1);if (i<>j)and(bool[i,j]) thenbegininc(s);a[s].x:=i;a[s].y:=j;a[s].h:=x1;bool[i,j]:=false;bool[j,i]:=false;end;end;end;x,y,i,j :longint;s dof[i]:=i; x:=find(a[i].x);y:=find(a[i].y);if x<>y thenbeginf[x]:=y;inc(sum,a[i].h);inc(totel);end;;end;end;begin duru; kuai(1,s); kruscal; writeln(sum);end.

,效果只能是既费时又没有胜利,再聪慧的人也没法成学。

最小生成树kruscal+并查集

相关文章:

你感兴趣的文章:

标签云: