複習筆記1 用並查集實現 kruskal演算法

2022-08-02 04:51:12 字數 708 閱讀 7519

/**

並查集實現克魯斯卡爾演算法

輸入:6//表示有m條邊

1 2 6//表示1和2之間有一條邊,權值為6

2 4 1

1 4 2

1 3 1

3 5 4

4 5 3

**/#include

#include

#include

#define max_n 100

using namespace std;

struct node

;int cmp(node a,node b)//對vector儲存內容進行由小到大排序

vectorv;//用vector儲存所有邊的資訊

int f[max_n];

/**找到每個節點的父節點

**/int findpar(int n)

else

}/**

如果兩個節點不在同乙個連通分支中,則合併,並修改其中一棵樹根節點的父節點

**/int merges(int a,int b)

else

}int main()

int m;

cin>>m;

for(int i=0;i

sort(v.begin(),v.end(),cmp);//根據每條邊的權值從小到大排序

for(int i=0;i

}return 0;

}

並查集複習

定義陣列 fa x 表示 x 的父親 操作之前先要初始化每乙個節點的父親為自己 for int i 1 i n i fa i i 並查集基本操作 查詢,合併 查詢 查詢元素所在集合 int query int x 路徑壓縮 int query int x 遞迴版 int query int x 合併...

分類並查集 並查集的複習

動物王國中有三類動物a,b,c,這三類動物的食物鏈構成了有趣的環形。a吃b,b吃c,c吃a。現有n個動物,以1 n編號。每個動物都是a,b,c中的一種,但是我們並不知道它到底是哪一種。有人用兩種說法對這n個動物所構成的食物鏈關係進行描述 第一種說法是 1 x y 表示x和y是同類。第二種說法是 2 ...

初學並查集 並查集1

現在,我是用乙個初學者的眼光來寫並查集,此文最初寫於我學並查集的那天,後經過多次修改。1 並查集是什麼 並查集是乙個具有多個連通分支的圖,他擁有合併兩個連通分支,和查詢兩個元素是否位於同乙個連通分支的功能。2 並查集的簡單應用 並查集解決什麼問題 假如有一些點,你知道哪些點是直接相連的,但實際上間接...