10. Number of Provinces

There are n cities. Some of them are connected, while some are not. If city a is connected directly with city b, and city b is connected directly with city c, then city a is connected indirectly with city c.

A province is a group of directly or indirectly connected cities and no other cities outside of the group.

You are given an n x n matrix isConnected where isConnected[i][j] = 1 if the ith city and the jth city are directly connected, and isConnected[i][j] = 0 otherwise.

Return the total number of provinces.

Example 1:

Input: isConnected = [[1,1,0],[1,1,0],[0,0,1]]
Output: 2

Example 2:

Input: isConnected = [[1,0,0],[0,1,0],[0,0,1]]
Output: 3

Solution: (Bfs on Adjacency Matrix)

class Solution
{
public:
    void bfs(int node, vector<vector<int>> v, vector<bool> &vs)
    {
        queue<int> q;
        q.push(node);
        vs[node] = 1;

        while (!q.empty())
        {

            int x = q.front();
            q.pop();

            for (int i = 0; i < v[x].size(); i++)
            {
                if (v[x][i] == 1 && vs[i] == 0)
                {
                    vs[i] = 1;
                    q.push(i);
                }
            }
        }
        return;
    }

    int findCircleNum(vector<vector<int>> &M)
    {
        int count = 0;
        int n = M.size();
        vector<bool> vs(n);
        for (int i = 0; i < n; i++)
        {
            if (!vs[i])
            {
                bfs(i, M, vs);
                count++;
            }
        }
        return count;
    }
};

Time Complexity: O(N^2)

Last updated