kruskal 並查集優化

2021-09-08 02:16:23 字數 770 閱讀 7010

這兩天搞dp搞的快暴了,想學學網路流。拿過算導來一看,最短路還沒整完呢。寫了乙個用並查集優化的kruskal演算法,並查集是用非遞迴的狀態壓縮實現的。

詳見:kruskal沒有用堆優化,不是我不想,而是實在不會。。。所以直接用sort按權值排了下序,時間複雜度o(n+n*logn)

my code:

#include 

#include

#include

#include

using

namespace std;

const

int n = 1000;

struct edg edg[n];

int parent[n];

bool cmp(edg a, edg b)

void

set()

int find_set(int n)

k = n;

while(k != r)

return r;

}int kruskal(int n)

return sum;

}int main()

sort(edg, edg+n, cmp);

cout << kruskal(n) << endl;

return

0;}

附一組資料:

5 61 2 1

2 3 3

3 4 2

1 5 2

1 4 6

2 5 4

sum = 8

Kruskal 演算法 並查集

需要注意的地方 將所有的邊權從小到大依次排序,按從小到大依次加入邊,每次對加入的邊進行如下操作 1.找出邊的兩點。2.判斷兩點的父親節點是在同乙個集合裡。3.如果不在同乙個集合,在將兩點所在的集合合併 union,且計數器 1 5.當計數器 n 1 總點數 時 停止查詢。此時只有乙個集合,該集合即為...

並查集 Kruskal 劍魚行動

ssl 1618 給出n個點的座標,對它們建立乙個最小生成樹,代價就是連線它們的路徑的長度,現要求總長度最小。n的值在100以內,座標值在 10000,10000 結果保留二位小數 5 0 0 0 1 1 1 1 0 0.5 0.52.83用kru skal kruskal kruska l演算法做...

Kruskal演算法的並查集實現

最小生成樹的kruskal演算法的偽 如下 w i 為邊的權值,u i v i 分別為邊的端點的下標 mst為最小生成樹的所有邊的結合 n為頂點的個數 m為邊的個數 將邊按權值排序w 0 w 1 w m 1 初始化每個頂點屬於不同的連通分量 for i 0 i include using names...