547. 省份数量
DFS
深度优先搜索的思路是很直观的。遍历所有城市,对于每个城市,如果该城市尚未被访问过,则从该城市开始深度优先搜索,通过矩阵 i s C o n n e c t e d isConnected isConnected 得到与该城市直接相连的城市有哪些,这些城市和该城市属于同一个连通分量,然后对这些城市继续深度优先搜索,直到同一个连通分量的所有城市都被访问到,即可得到一个省份。遍历完全部城市以后,即可得到连通分量的总数,即省份的总数
class Solution
{
public:
int findCircleNum(vector<vector<int>> &isConnected)
{
int n = isConnected.size();
int res = 0;
vector<bool> visited(n, false);
for (int i = 0; i < n; i++)
{
if (!visited[i])
{
DFS(isConnected, i, visited);
res++;
}
}
return res;
}
void DFS(vector<vector<int>> &isConnected, int me, vector<bool> &visited)
{
visited[me] = true;
for (int other = 0; other < isConnected.size(); other++)
{
if (isConnected[me][other] && !visited[other])
{
DFS(isConnected, other, visited);
}
}
}
};