Johnson's Algorithm

Donald B. Johnson, 1977

O(V² log V + VE)

Johnson (1977) handles negative edges by computing potentials h(v) via Bellman-Ford from a virtual source, then reweighting so all edges become non-negative. Dijkstra then runs from each vertex. Total O(V² log V + VE).