Parallel Algorithms for Shortest Path Problems