Question 44 of 75 - LeetCode Weekly Challenge

LeetCode Challenge #547. 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.

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:

graph1

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

Example 2:

graph2

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

 

Constraints:

  • 1 <= n <= 200
  • n == isConnected.length
  • n == isConnected[i].length
  • isConnected[i][j] is 1 or 0.
  • isConnected[i][i] == 1
  • isConnected[i][j] == isConnected[j][i]
Video Solution
C++ Solution
				
					class Solution {
public:
    void provinces(unordered_map<int,vector<int>>& mp, vector<bool> &visited, int curr)
    {
        visited[curr]=true;
        for(auto i:mp[curr])
        {
            if(!visited[i])
            {
                provinces(mp,visited,i);
            }
        }
    }
    int findCircleNum(vector<vector<int>>& isConnected) {
        unordered_map<int,vector<int>> mp;
        int n=isConnected.size();

        for(int i=0; i<n; i++)
        {
            for(int j=0; j<n; j++)
            {
                if(isConnected[i][j]==1 and i!=j)mp[i].push_back(j);
            }
        }
       
        vector<bool> visited(n,false);
        int count=0;

        for(int i=0; i<n; i++)
        {
            if(!visited[i])
            {
                provinces(mp,visited,i);
                count++;
            }
        }
        return count;
    }
};
				
			

Happy Coding with edSlash