用定點陣列記錄每個子樹的最近鄰居。
對於每一條邊進行處理:
如果這條邊連成的兩個頂點同屬於乙個集合,則不處理,否則檢測這條邊連線的兩個子樹,如果是連線這兩個子樹的最小邊,則更新 (合併)。
那麼中演算法有什麼用呢,kruskal,prim演算法不好嗎?它們好是好,但在某些題目裡面可能用第三種演算法更加優。對於那些點數n是1e5級別,邊數m卻是n
2n^2
n2級別的圖,但每個點的最小邊能很快算出來的題,求最小生成樹我們不可能存得下邊。這時候borůvka演算法用處就體現了,因為它的空間複雜度只跟點數有關。
struct node edge[m]
;int d[n]
;// 各子樹的最小連外邊的權值
int e[n]
;// 各子樹的最小連外邊的索引
bool v[m]
;// 防止邊重複統計
int fa[n]
;int
find
(int x)
void
join
(int x,
int y)
intboruvka()
if(cur==0)
break
;for
(int i=
1; i<=n;
++i)
if(d[i]
!=inf &&
!v[e[i]])
}return tot;
}
參考: reflux react web 第三種寫法
元件監聽store第三種寫法 reflux.listento store,監聽方法 在mixins內用reflux.listento實現了store的監聽 var todocomponent react.createclass onstatuschange function list compone...
最小生成樹演算法
由帶權的連通圖生成的數的各邊加起來稱為生成樹的權,把權值最小的生成樹稱為最小生成樹 minimum spanning tree 簡稱為mst 構造最小生成樹的方法就是利用mst性質,一條一條地選擇可以加入的邊。下面介紹兩種用於構造最小生成樹的演算法,其中第一種演算法稱為prim演算法,第二種演算法稱...
最小生成樹演算法
乙個最簡單的最小生成樹 圖結構練習 最小生成樹 time limit 1000ms memory limit 65536k 有n個城市,其中有些城市之間可以修建公路,修建不同的公路費用是不同的。現在我們想知道,最少花多少錢修公路可以將所有的城市連在一起,使在任意一城市出發,可以到達其他任意的城市。輸...