Given a graph that has negative weights but we know for sure it has no negative cycle:
Add a big enough constant to all weights so they are now positive and use Dijkstra's algorithm to find the smallest path.
Is the above correct if we don't have negative cycles? If we have negative cycles we can't use that algorithm since it will need to revisit the nodes Dijkstra marked as completed.