Module Strongly_connected_components.Make

Parameters

Signature

type directed_graph = Id.Set.t Id.Map.t

If (a -> set) belongs to the map, it means that there are edges from a to every element of set. It is assumed that no edge points to a vertex not represented in the map.

type component =
  1. | Has_loop of Id.t list
  2. | No_loop of Id.t
val connected_components_sorted_from_roots_to_leaf : directed_graph -> component array
val component_graph : directed_graph -> (component * int list) array