省份数量

思路1 dfs

    void dfs(int i, vector<bool>& visited, vector<vector<int>>& arr, int& count) {
        if(!visited[i]) {
            visited[i] = true;
            for (int j = 0; j < arr.size(); ++j) {
                if( 1 == arr[i][j]) {
                    dfs(j, visited, arr, count);
                }
            }
        }
    }
    int findCircleNum(vector<vector<int>>& isConnected) {
        int n = isConnected.size();
        if (0 == n) return 0;
        int m = isConnected[0].size();
        if (0 == m) return 0;
        int count = 0;
        std::vector<bool> visited;
        visited.resize(n, false);
        for(int i = 0; i < n; ++i) {
            if (!visited[i]) {
                count++;
                dfs(i, visited, isConnected, count);
            }   
        }
        return count;
    }

思路2 并查集

posted @ 2021-07-12 11:23  cyssmile  阅读(34)  评论(0)    收藏  举报