题目描述
AC代码
/*
解题思路:并查集
*/
class Solution {
int[] pre;
public int find(int x){
if(pre[x]!=x)
pre[x]=find(pre[x]);
return pre[x];
}
public int findCircleNum(int[][] M) {
int n=M.length;
pre=new int[n];
for(int i=0;i<n;i++)
pre[i]=i;
int res=n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(M[i][j]==0)
continue;
if(find(i)!=find(j)){
//合并
pre[find(i)]=find(j);
res--;
}
}
return res;
}
}