An equivalent way of looking at this is that the poster wants the transitive closure of a relation (or graph). Thus,

Graph::TransitiveClosure (which is a submodule of

Graph—if that terminology makes sense—and is probably what it calls to find (weakly) connected components anyway) or

Algorithms::Graphs::TransitiveClosure are also suitable, and may suggest more directly what's going on.

(Of course, having to call `weakly_connected_components` instead of the probably more natural `connected_components` is an artifact of working with directed graphs, which could be avoided by getting a new `Graph::Undirected` instead.)

UPDATE: Directed *graphs*, not graphics.

Comment onRe^2: results from pairs combinationSelectorDownloadCode