Problems
*graphs
    *depth-first search, breadth-first search, priority FS
    *cycle, connected components
    *bi-connected components
    *union-find

*weighted graphs
    *minimum spanning trees
    *shortest paths (single source)

*directed graphs
    *transitive closures (connected components all pairs shortest paths)
    *topological shorting
    *strongly connected components

*weighted directed graphs
    *Network flows
    *Bipartite matching
    *Stable marriage