並查集的理解

2021-08-18 15:07:26 字數 679 閱讀 7325

並查集的模板,不理解也要背下來;

#include//萬能標頭檔案

using namespace std;

int par[100000],ran[10000]; //個數與深度;

int n,m;

void init(int n) //初始化; 當不需要返回值的時候,函式的型別標void。其實這個也是會返回乙個值,好像是呼叫成功返回1,不成功返回0

} int find(int x) //查詢根節點

return par[x]=find(par[x]);

} void unite(int x,int y) //連根

if(ran[x]>n>>m;

int a,b; //輸入連根的數;

init(n);

for(int i=1;i<=m;i++)

int s=0;

for(int i=1;i<=n;i++)

cout

並查集理解

作用 連通分量的查詢與合併 理解 1.將連通分量看成乙個集合,該集合包含了連通分量的所有點。連同方式無關緊要,只有屬於和不屬於與這個集合的區別。2.每個集合都可看成一棵樹,這個集合的標誌 這棵樹的標誌 就是這棵樹的根。3.如果把節點x的父親節點儲存在pre x 中,那麼再從pre x 找它的父親節點...

並查集理解

學了這麼久的資料結構了,還是有好些演算法並沒弄清楚,搞得有些筆試題都是沒有思路,今天就講講並查集。感覺這東西吧,就是分圈子,乙個人自成乙個圈子,若分屬於兩個不同圈子的人在某時刻成了好朋友,那這兩個圈子就合併成了乙個圈子,最終在題目中形成多個圈子進行分析。判斷兩個人是不是乙個圈子要不停的找朋友驗證,這...

並查集的理解

從數學的角度來說,假設我們有n個集合,而每個集合內又有眾多的元素,等等,每個集合的元素都存在這或多或少的聯絡,什麼聯絡不清楚,但我們只需知道存在這樣的關係即可 而突然,我們希望讓集合之間也聯絡起來,而又不想乙個乙個的將它們綁到一起,那麼,並查集就是解決它們之間聯絡的資料結構。樹就是我們需要用到的一種...