1. 程式人生 > >Leetcode 547. Friend Circles [Medium]

Leetcode 547. Friend Circles [Medium]

原題地址

題目內容

這裡寫圖片描述

題目分析

題目的意思是,找出有多少個朋友環.如果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; } };