Friend Circles

来源:互联网 发布:奶酪陷阱 知乎 编辑:程序博客网 时间:2024/05/29 15:20
There are N students in a class. Some of them are friends, while some are not. Their friendship is transitive in nature. For example, if A is a direct friend of B, and B is adirect friend of C, then A is anindirect friend of C. And we defined a friend circle is a group of students who are direct or indirect friends.

Given a N*N matrixM representing the friend relationship between students in the class. If M[i][j] = 1, then the ith and jth students aredirect friends with each other, otherwise not. And you have to output the total number of friend circles among all the students.


class Solution {public:    int findCircleNum(vector<vector<int>>& M) {    int s = 0;    int n = M.size();    bool visit[n];    memset(visit,0,n);        for(int j = 0; j < n; j ++)        {        if(visit[j] == 0)        {        s ++;        dfs(j, M, visit);        }        }        return s;    }private:        void dfs(int i,vector<vector<int>>& M,bool* visit)         {            visit[i] = 1;        for(int j = 0; j < M.size(); j ++)        {        if(M[i][j] == 1 && i != j && visit[j] == 0)        {        dfs(j, M, visit);        }        }        } };

0 0
原创粉丝点击