Shortest path problems