Graph Theory37 sections · 1633 units
Open in Course

LeetCode 547 Number of Provinces - Implementation

The Code

Here is the solution:

function dfs(u, matrix):
    visited[u] = true
    for v from 0 to n - 1:
        if matrix[u][v] == 1 and not visited[v]:
            dfs(v, matrix)

function findCircleNum(isConnected):
    n = isConnected.length
    visited = [false] * n
    provinces = 0

    for i from 0 to n - 1:
        if not visited[i]:
            provinces = provinces + 1
            dfs(i, isConnected)

    return provinces

This runs in O(V2)O(V^2) time since you scan every row of the adjacency matrix, and uses O(V)O(V) space.