資料結構 並查集

2021-08-18 15:50:13 字數 1113 閱讀 3926

並查集:通過陣列來實現的一種將有關係的節點都聯絡起來的一種搜尋結構。

**實現:

#include

#include

using

namespace

std;

class unionfindset

void union(int root1, int root2) //結合兩個節點

size_t findroot(int index) //找父節點的位置

int num = _set[index];

intset = 0;

while (num>=0)

return

set;

}int size() //朋友圈的個數

return count;

}private:

vector

_set;

size_t _n; //給定範圍資料的個數

};void test()

使用場景:假如已知有n個人和m對好友關係(存於數字r)。如果兩個人是直接或間接的好友(好友的好友的好友…),則認為他們屬於同乙個朋友圈,請寫程式求出這n個人裡一共有多少個朋友圈。

假如:n = 5 , m = 3 , r = , , },表示有5個人,1和2是好友,2和3是好友,4和5是好友,則1、2、3屬於乙個朋友圈,4、5屬於另乙個朋友圈,結果為2個朋友圈。 最後請分析所寫**的時間、空間複雜度。評分會參考**的正確性和效率。

**實現:

呼叫上面的**即可

資料結構 並查集

並查集,顧名思義,合併 查詢 集合 並查集是一種樹型的資料結構,用於處理一些不相交集合 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個元素的集合應用問題中,通常是在開始時讓每個元素構成乙個單元素的...