arboretum_td/graph/
mutable_graph.rs

1use crate::graph::base_graph::BaseGraph;
2
3pub trait MutableGraph: BaseGraph {
4    fn add_vertex(&mut self, u: usize);
5    fn add_vertex_with_capacity(&mut self, u: usize, capacity: usize);
6    fn remove_vertex(&mut self, u: usize);
7    fn add_edge(&mut self, u: usize, v: usize);
8    fn remove_edge(&mut self, u: usize, v: usize);
9    fn eliminate_vertex(&mut self, u: usize);
10    fn contract(&mut self, u: usize, v: usize);
11    fn new() -> Self;
12    fn with_capacity(capacity: usize) -> Self;
13    fn make_clique(&mut self, vertices: &[usize]) {
14        for (i, v) in vertices.iter().enumerate() {
15            for u in vertices.iter().skip(i + 1) {
16                self.add_edge(*u, *v);
17            }
18        }
19    }
20}