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.