gumgum's Garden🌼

Djisktras Algorithm

Djikstras Algorithm visits the node with the shortest distance to source first

def dijkstra(self, n, adj, src):
        dist = [1e9] * n
        dist[src] = 0
        visited = [False] * n
        
        for _ in range(n):
            
            min_dist_in_set = 1e9
            # node closest to source
            min_dist_node = src
            for node in range(n):
                if not visited[node] and dist[node] < min_dist_in_set:
                    min_dist_in_set = dist[node]
                    min_dist_node = node
                
            visited[min_dist_node] = True
                
            for neighbour, wt in adj[min_dist_node]:
                new_dist = dist[min_dist_node] + wt
                if new_dist < dist[neighbour]:
                    dist[neighbour] = new_dist
        return dist