資料結構 並查集之一

2021-08-27 10:11:37 字數 805 閱讀 6416

並查集(union-find sets)是一種不相交集合,可用樹表示。

union的加權規則:在兩個樹合併(union操作)時,以結點數多的樹的root為新樹的root;即結點數少的樹接在結點數多的樹上。

find的壓縮規則:在find(x)操作時,沿節點x的parent鏈域走動,依次將parent鏈域的結點掛在root下。

問題:求包含0元素的集合的結點數。

源**

#include "stdio.h"

#include "string.h"

int parent[30000];

int find(int x)

return root; }}

void root_union(int x,int y)

} printf("%d\n",-parent[find(0)]);

} return 0;

}

問題:所有不相交集合的個數

源**#include "stdio.h"

#include "string.h"

int parent[50000];

int find(int x)

return root; }}

void root_union(int x,int y)

{ int xroot=find(x);

int yroot=find(y);

if(xroot!=yroot)

{ int temp=parent[xroot]+parent[yroot];

if(parent[xroot]

資料結構 並查集

並查集,顧名思義,合併 查詢 集合 並查集是一種樹型的資料結構,用於處理一些不相交集合 disjoint sets 的合併及查詢問題。常常在使用中以森林來表示。對於概念等等的這裡不再贅述,直接講解應用。應用1 判斷圖中有多少聯通分量 或者圖是否聯通 聯通分量 1 hdu 1213 應用2 判斷圖是否...

資料結構 並查集

time limit 1000ms memory limit 65536k 某城市有n個人,現在給定關於n個人的m條資訊,m條資訊是兩個人在同乙個小區,根據所給資訊,判斷這個城市最多可能有多少個小區。n個人編號為1 n。多組輸入。每組第一行有兩個整數n,m 2 n 50000,0 m n 2 接下來...

資料結構 並查集

一 基本概念 並查集是一種樹型的資料結構,用於處理一些不相交集合 disjoint sets 的合併及查詢問題。常常在使用中以森林來表示。集就是讓每個元素構成乙個單元素的集合,也就是按一定順序將屬於同一組的元素所在的集合合併。在一些有n個元素的集合應用問題中,通常是在開始時讓每個元素構成乙個單元素的...