Leetcode 547. Friend Circles [Medium]

来源:互联网 发布:淘宝达人怎么介绍自己 编辑:程序博客网 时间:2024/06/06 00:59

原题地址

题目内容

这里写图片描述

题目分析

题目的意思是,找出有多少个朋友环.如果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;    }};
原创粉丝点击