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