
思路1 dfs
void dfs(int i, vector<bool>& visited, vector<vector<int>>& arr, int& count) {
if(!visited[i]) {
visited[i] = true;
for (int j = 0; j < arr.size(); ++j) {
if( 1 == arr[i][j]) {
dfs(j, visited, arr, count);
}
}
}
}
int findCircleNum(vector<vector<int>>& isConnected) {
int n = isConnected.size();
if (0 == n) return 0;
int m = isConnected[0].size();
if (0 == m) return 0;
int count = 0;
std::vector<bool> visited;
visited.resize(n, false);
for(int i = 0; i < n; ++i) {
if (!visited[i]) {
count++;
dfs(i, visited, isConnected, count);
}
}
return count;
}
思路2 并查集