class Solution {
    private int n = 0;
    public int findCircleNum(int[][] M) {
        n = M.length;
        int res = 0;
        boolean[] vis = new boolean[n];
        for (int i = 0; i < n; i++) {
            if (vis[i] == false) {
                dfs(M, i, vis);
                res++;
            }
        }
        return res;
    }
    private void dfs(int[][] M, int i, boolean[] vis) {
        vis[i] = true;
        for (int k = 0; k < n; k++) {
            if (M[i][k] == 1 && vis[k] == false) {
                dfs(M, k, vis);
            }
        }
        
    }
}








