spanning_forest

inline Forest const &libsemigroups::ActionDigraph::spanning_forest() const

Returns a libsemigroups::Forest comprised of spanning trees for each scc of this, rooted on the minimum node of that component, with edges oriented away from the root.

Complexity

At most \(O(mn)\) where m is nr_nodes() and n is out_degree().

Parameters

(None)

Throws

LibsemigroupsException – if it is not the case that every node has exactly out_degree() out-neighbors. In other words, if neighbor() is libsemigroups::UNDEFINED for any node nd and any label lbl. If an exception is thrown, this might be modified but is guaranteed to be in a valid state (basic exception guarantee).

Returns

A const reference to a libsemigroups::Forest.