编辑代码

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;
    }
}