Number of Provinces
Medium; graph; DFS
class Solution:
def findCircleNum(self, isConnected: List[List[int]]) -> int:
# idea: DFS
#
# 1. iterate every node if node not in set, then we find a new province so cnt += 1 else go to next step
# 2. in each node, find its neighbor and add neighbor to set if neighbor not found
# 3. use DFS to find neighbor of neighbor and add them to set until neighbor already in set or
# not neighbor found
# 4.
#
if not isConnected or not isConnected[0]:
return 0
visited = set()
cnt = 0
for i in range(len(isConnected)):
if i not in visited:
self.findProvinces(visited, isConnected, i)
cnt += 1
return cnt
def findProvinces(self, visited, g, node):
if node in visited:
return
visited.add(node)
for n in range(len(g[node])):
if g[node][n] == 1:
self.findProvinces(visited, g, n)
Last updated