LeeCode 547. 省份数量(DFS)

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

Guess you like

Origin blog.csdn.net/leoabcd12/article/details/121130444