Skip to main content

subcomponent

Function subcomponent 

Source
pub fn subcomponent(
    graph: &Graph,
    source: VertexId,
    mode: SubcomponentMode,
) -> IgraphResult<Vec<VertexId>>
Expand description

Returns all vertices reachable from source following edges in the specified mode.

For undirected graphs, mode is ignored (all modes are equivalent).

The result always includes source itself. Vertices are returned in BFS discovery order.

§Errors

Returns VertexOutOfRange if source >= vcount.

§Examples

use rust_igraph::{Graph, subcomponent, SubcomponentMode};

let mut g = Graph::new(5, true).unwrap();
g.add_edge(0, 1).unwrap();
g.add_edge(1, 2).unwrap();
g.add_edge(3, 4).unwrap();

// From vertex 0, following OUT edges: reach 0, 1, 2
let reach = subcomponent(&g, 0, SubcomponentMode::Out).unwrap();
assert_eq!(reach, vec![0, 1, 2]);

// From vertex 2, following OUT edges: only 2 (no outgoing)
let reach = subcomponent(&g, 2, SubcomponentMode::Out).unwrap();
assert_eq!(reach, vec![2]);

// From vertex 2, following IN edges: reach 2, 1, 0
let reach = subcomponent(&g, 2, SubcomponentMode::In).unwrap();
assert_eq!(reach, vec![2, 1, 0]);

// Following ALL: reach 0, 1, 2 (component of 0-1-2)
let reach = subcomponent(&g, 1, SubcomponentMode::All).unwrap();
assert_eq!(reach.len(), 3);