The document discusses algorithms for solving single-source shortest path problems on directed graphs. It begins by defining the problem and describing Bellman-Ford's algorithm, which can handle graphs with negative edge weights but runs in O(VE) time. It then describes how Dijkstra's algorithm improves this to O(ElogV) time using a priority queue, but requires non-negative edge weights. It also discusses how shortest paths can be found in O(V+E) time on directed acyclic graphs by relaxing edges topologically. Finally, it discusses how difference constraints can be modeled as shortest path problems on a corresponding constraint graph.