並查集 leetcode 程式設計題

2021-08-08 18:42:08 字數 764 閱讀 3905

先看先人的總結:

[置頂] 並查集詳解 ***

傻子都能看懂的並查集入門

parent 集合代表,rank集合層級,data 元素的數值

初始化:

將所有元素的集合代表設定成自己,rank層級設定成0,

查詢:查詢乙個元素的集合代表,原理是指標迴圈操作

合併集合:

將兩個集合的集合代表設定成乙個。一般根據rank層級選擇層級大的做代表。目的是使得樹的分部盡量均勻

給定乙個矩陣,由0和1組成,1代表橫縱座標的兩個人是朋友,朋友關係具有傳遞性。求有多少個朋友集合。

可以直接使用dfs。建立乙個標記陣列,已經遍歷過的小孩不需要做操作。這樣的時間複雜度並不高,因為每個小孩只走訪一次。如果只有幾個小朋友,那麼dfs的遞迴呼叫只有幾次。

class solution 

return i;//最後找到代表節點

}//合併操作

void unionfriend(vector& parent,vector& rank,int& i,int& j)

else

count--;

}int findcirclenum(vector>& m) ,,,};

visited[i][j]=1;

for(int k=0;k<4;k++)

}

return count;

}private void dfsmarking(char grid, int i, int j)

並查集 帶權並查集 種類並查集 入門基礎題

include include include include include include include includetypedef long long ll using namespace std const int inf 0x3f3f3f3f const int maxn 2e5 10...

並查集簡單題

題目傳送 poj 1611 the suspects ac include include include include include include include include include include include include include include define l...

並查集 題1

問題描述 今天是ignatius的生日。他邀請很多朋友。現在是晚餐時間。ignatius想知道他至少需要多少張桌子。你必須注意到,並不是所有的朋友都認識對方,所有的朋友都不想留在陌生人身上。這個問題的乙個重要規則是,如果我告訴你a知道b,b知道c,這意味著a,b,c彼此認識,所以他們可以留在乙個表中...