並查集的模板,不理解也要背下來;
#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個集合,而每個集合內又有眾多的元素,等等,每個集合的元素都存在這或多或少的聯絡,什麼聯絡不清楚,但我們只需知道存在這樣的關係即可 而突然,我們希望讓集合之間也聯絡起來,而又不想乙個乙個的將它們綁到一起,那麼,並查集就是解決它們之間聯絡的資料結構。樹就是我們需要用到的一種...