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
Was this helpful?