[algorithm] Why doesn't Dijkstra's algorithm work for negative weight edges?