第三種最小生成樹演算法 Bor vka演算法

2021-10-02 14:31:56 字數 757 閱讀 4609

用定點陣列記錄每個子樹的最近鄰居。

對於每一條邊進行處理:

如果這條邊連成的兩個頂點同屬於乙個集合,則不處理,否則檢測這條邊連線的兩個子樹,如果是連線這兩個子樹的最小邊,則更新 (合併)。

那麼中演算法有什麼用呢,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個城市,其中有些城市之間可以修建公路,修建不同的公路費用是不同的。現在我們想知道,最少花多少錢修公路可以將所有的城市連在一起,使在任意一城市出發,可以到達其他任意的城市。輸...