Steps
1. Assign distance 0 to source; ∞ to all other nodes
2. Add all nodes to an unvisited set
3. Select the unvisited node with the smallest distance (current node)
4. For each neighbour: if distance to current + edge weight < neighbour's current distance, update it (relaxation)
5. Mark current node as visited; remove from unvisited set
6. Repeat from step 3 until destination reached or all nodes visited