Finds shortest paths even with negative edges. Detects negative cycles.
Time: O(VE) — slower than Dijkstra but handles negatives