要求:给连通矩阵求连通分支数
思路:
法一:这种是真的图,每一行都表示一个节点情况,跟一般的矩阵不一样(如求岛屿数量这种无脑遍历),直接对每个节点dfs,当然还可以bfs
class Solution {
public:
void dfs(vector<vector<int>>& isConnected,int i){
isConnected[i][i]=0;
for(int j=0;j<isConnected.size();++j)
if(isConnected[i][j]&&isConnected[j][j]==1)
dfs(isConnected,j);
}
int findCircleNum(vector<vector<int>>& isConnected) {
int count=0;
for(int i=0;i<isConnected.size();++i){
if(isConnected[i][i]==0)continue;
dfs(isConnected,i);
++count;
}
return count;
}
};
法二:并查集太长了后面有缘再写