547. 朋友圈
ps:使用并查集的思想并不是最优的解法,这里只是想复习一下并查集的算法思想。
int findCircleNum(vector<vector<int>>& M) {
int count_ = 0;
int sideLen_ = M.size();
int parent_[1024] = { 0 };// 做初始化是一个好习惯
// 先做一个基本的初始化
for (int n = 0; n < sideLen_; n++)
parent_[n] = n;
for (int i = 0; i < sideLen_; i++) {
for (int j = 0; j < i; j++) {
if (M[i][j] == 1) {
int gpf_ = parent_[j];
int son_ = j;
while (gpf_ != son_) {
son_ = gpf_;
gpf_ = parent_[gpf_];
}
parent_[gpf_] = i;
}
}
}
// 数队长的个数即为朋友圈的总数
for (int k = 0; k < sideLen_; k++) {
if (parent_[k] == k)
count_++;
}
return count_;
}