Ocamlgraph provides several different implementations of graph data structures. It also provides implementations for a number of classical graph algorithms like Kruskal's algorithm for MSTs, topological ordering of DAGs, Dijkstra's shortest paths algorithm, and Ford-Fulkerson's maximal-flow algorithm to name a few. The algorithms and data structures are written functorially for maximal reusability. Also has input and output capability for Graph Modeling Language file format and Dot and Neato graphviz (graph visualization) tools.