力扣 547. 省份数量
题目:
链接https://leetcode.cn/problems/number-of-provinces/
代码:
class Solution {
public:
int f[205];
set<int> s;
int getf (int x){//并查集 寻找父亲节点
if (f[x] == x) return x;
return f[x] = getf(f[x]);
}
void mer(int x ,int y){//并查集 合并节点
int fx = getf(x),fy = getf(y);
if(fx == fy) return;
if(fx < fy) swap(fx,fy);
f[fx] = fy;
}
int findCircleNum(vector<vector<int>>& a) {
int n = a.size();
for(int i = 0;i < n; i++)
f[i] = i;
for(int i = 0;i < n;i++)
for(int j = 0;j < n;j++)
if(a[i][j] == 1)
mer(i,j);
for(int i = 0;i < n; i++)//统计连通块个数
s.insert(getf(i));
return s.size();
}
};