
class Solution {
public:
int findCircleNum(vector<vector<int>>& isConnected) {
int count = 0;
int m = isConnected.size();
vector<bool> visited(m,false);
for(int i = 0; i < m; i++){
if(!visited[i]){ // 因为visiter是引用传递,下面访问过的值会改变
dfs(isConnected,i,visited);
count++;
}
}
return count;
}
void dfs(vector<vector<int>>& isConnected, int i, vector<bool> &visited){
visited[i] = true; // 🦔标记访问过
for(int k = 0; k < isConnected.size(); k++){
// 将i作为横坐标,这一行都是与他相连的城市,用for循环遍历
// 在判断与其相连的城市是否访问过,通过!visited[k]判断
if(isConnected[i][k]==1&&!visited[k]){
dfs(isConnected,k,visited);
}
}
}
};