原题地址
题目内容
题目分析
题目的意思是,找出有多少个朋友环.如果A认识B,B认识C,那么A B C可构成一个环,D E互相认识,他们构成另一个环。采用dfs的方法,将能联通的记录成一个环,并且把访问过的节点标记为true,没有访问过的继续做dfs看是否还有朋友环。
代码实现
class Solution {
public:
int findCircleNum(vector<vector<int>>& M) {
int n = M.size();
int res = 0;
vector<bool> visited(n,false);
for(int i = 0; i < n; i++){
if(visited[i]){
continue;
}
findfriend(M,i,visited);
res++;
}
return res;
}
int findfriend(vector< vector<int> >&M, int k, vector<bool>& visited){
visited[k] = true;
for(int i = 0; i < M.size(); i++){
if(M[k][i] == 1 && visited[i] == false){
findfriend(M,i,visited);
}
}
return 1;
}
};