解题代码:
classSolution {
public:
voidfind(vector<vector<int>>& M,vector<int>& num,int i){
num[i]=1;
for(int j=0;j<M.size();j++){
if(j!=i&&M[i][j]==1&&num[j]!=1)
find(M,num,j);
}
return;
}
intfindCircleNum(vector<vector<int>>& M) {
if(M.size()==0)
return 0;
int count=0;
vector<int> num(M.size(),0);
for(int i=0;i<M.size();i++){
if(num[i]==0){
count++;
find(M,num,i);
}
}
return count;
}
};
解题思路:
题目要求找出班级里面朋友环的个数。可从第一个同学开始算,找出他的所有直接朋友,通过直接朋友找到间接朋友,并把所有这些被找到的人进行标记,表示他们为一个朋友环。而后对未被标记的人进行相同的操作,可以得到朋友环的总数。