class Main {
public static void main(String[] args) {
}
public int findCircleNum(int[][] M){
int[] fathers=new int[M.length];
for(int i=0;i<fathers.length;i++){
fathers[i]=i;
}
int count=M.length;
for(int j=0;i<M.length;i++){
for(j=i+1;j<M.length;j++){
if(M[i][j] == 1 && union(fathers,i,j)){
count--;
}
}
}
return count;
}
private int findFather(int[] fathers,int i){
if(fathers[i]!=i){
fathers[i]=findFather(fathers,fathers[i]);
}
return fathers[i];
}
private boolean union(int[] fathers,int i,int j){
int fatherOfI=findFather(fathers,i);
int fatherOfJ=findFather(fathers,j);
if(fatherOfI != fatherOfJ){
fathers[fatherOfI]=fatherOfJ;
return true;
}
return false;
}
}