class Solution {
public:
int findCircleNum(vector<vector<int>>& isConnected) {
if(isConnected.size() == 0 ||isConnected[0].size() == 0)return 0;
vector<int> flag(isConnected.size(),1);
int n = isConnected.size();
int num = 0;
for(int i = 0;i < n;i++)//row:i
{
if(flag[i])
{
num++;
flag[i] = 0;
for(int j = i + 1;j < n;j++)//column:j
{
if(isConnected[i][j] && flag[j])//i connect j
{
//isConnected[i][j] = 0;
flag[j] = 0;
stack<int> c;
c.push(j);//push into stack
while(!c.empty())
{
int ii = c.top();
c.pop();
for(int jj = 0;jj < n;jj++)
{
if(isConnected[ii][jj] && flag[jj])
{
flag[jj] = 0;
//isConnected[ii][jj] = 0;
c.push(jj);
}
}
}
}
}
}
}
return num;
}
};