Dijkstra handles any non-negative weights: , , , . It is faster than Bellman-Ford when weights are positive.
The moment you see a negative edge, Dijkstra breaks. It assumes visiting a node again will not improve the distance.
If all weights and you need single-source distances, pick Dijkstra. With a binary heap, it runs in time. For dense graphs where , that is . Still faster than Bellman-Ford's .