diff --git a/src/generators.rs b/src/generators.rs index 16d2bec..e64942d 100644 --- a/src/generators.rs +++ b/src/generators.rs @@ -84,6 +84,28 @@ pub fn cycle(graph: &mut G, n: usize) -> (Vec(graph: &mut G, n: usize) -> (Vec, Vec) { + let capacity = n * (n - 1) / 2; + graph.reserve_vertices(n); + graph.reserve_edges(capacity); + let vertices: Vec<_> = (0..n).map(|_| graph.add_vertex()).collect(); + let mut edges = Vec::with_capacity(capacity); + for (i, &u) in vertices.iter().enumerate() { + for &v in &vertices[i + 1..] { + edges.push(graph.add_edge(u, v)); + } + } + (vertices, edges) +} + /// Generates a Petersen graph. /// /// Generates a [Petersen graph] in `graph` as a new connected component and returns the new