这个题以前做过,用的是并查集,这次选择用DFS。我开辟了一个新的数组,长度为n,表示第i个人的直系关系有没有找过。
class Solution {
public:
int findCircleNum(vector<vector<int>>& M) {
int n = M.size();
vector<int> ischeck(n, 0);
int count = 0;
for(int i = 0; i < n; ++i)
{
if(ischeck[i] == 1)
continue;
dfs(M, ischeck, i);
count++;
}
return count;
}
void dfs(vector<vector<int>>& M, vector<int>& ischeck, int id)
{
if(ischeck[id] == 0)
ischeck[id] = 1;
else
return;
for(int i = 0; i < M.size(); ++i)
{
if(M[id][i] == 1)
{
dfs(M, ischeck, i);
}
}
}
};