Leetcode 547. Friend Circles [Medium]
阿新 • • 發佈:2018-12-11
原題地址
題目內容
題目分析
題目的意思是,找出有多少個朋友環.如果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;
}
};