Shortest paths from one source in a graph with non-negative weights, always expanding the closest unfinished vertex.
It keeps a tentative distance per vertex and a priority queue. Once a vertex is popped its distance is final, which is why negative weights break it.