Algorithms:
- Dijkstra's shortest path algorithm (not using a priority queue).
- Tarjan's algorithm for finding strongly connected components.
- Modified Depth First Search to find weakly connected components.
- Kahn's algorithm for topological sorting:
- to find DAGs.
- to find Hamiltonian DAGs.