| 1 | Initialize distances and queue | None | {"A":0,"B":Infinity,"C":Infinity,"D":Infinity} | [A:0] | Graph nodes: A, B, C, D; Distances set; Queue contains A |
| 2 | Extract node with smallest distance | A | {"A":0,"B":Infinity,"C":Infinity,"D":Infinity} | [] | Visiting A; Queue empty after extraction |
| 3 | Update neighbors of A | A | {"A":0,"B":1,"C":4,"D":Infinity} | [B:1, C:4] | Updated B and C distances; Queue updated with B and C |
| 4 | Extract node with smallest distance | B | {"A":0,"B":1,"C":4,"D":Infinity} | [C:4] | Visiting B; Queue has C |
| 5 | Update neighbors of B | B | {"A":0,"B":1,"C":3,"D":6} | [C:3, D:6, C:4] | Updated C and D distances; Queue updated with C(3) and D(6) |
| 6 | Extract node with smallest distance | C | {"A":0,"B":1,"C":3,"D":6} | [C:4, D:6] | Visiting C; Queue has C(4) and D(6) |
| 7 | Update neighbors of C | C | {"A":0,"B":1,"C":3,"D":4} | [D:4, D:6, C:4] | Updated D distance; Queue updated with D(4) |
| 8 | Extract node with smallest distance | D | {"A":0,"B":1,"C":3,"D":4} | [D:6, C:4] | Visiting D; Queue has D(6) and C(4) |
| 9 | D has no neighbors to update | D | {"A":0,"B":1,"C":3,"D":4} | [D:6, C:4] | No updates; Queue unchanged |
| 10 | Extract node with smallest distance | C | {"A":0,"B":1,"C":3,"D":4} | [D:6] | Visiting C again (from previous queue entry); no updates |
| 11 | Extract node with smallest distance | D | {"A":0,"B":1,"C":3,"D":4} | [] | Visiting D again; no updates; Queue empty |
| 12 | Algorithm ends | None | {"A":0,"B":1,"C":3,"D":4} | [] | All shortest distances finalized |