classSolution{staticint[] father;publicintfindCircleNum(int[][] M){
father =newint[M.length];for(int i=0;i<father.length;i++)father[i]=i;for(int i =0;i<M.length;i++){for(int j =0;j<M.length;j++){if(M[i][j]==1)merge(i,j);}}
HashSet<Integer> set=newHashSet<Integer>();for(int i =0;i<father.length;i++){
set.add(find(father[i]));}return set.size();}publicstaticintfind(int a ){return(father[a]==a ? a :(father[a]=find(father[a])));}publicstaticvoidmerge(int a ,int b ){int fa=find(a);int fb=find(b);if(fa!=fb){
father[fa]=fb;}}}