diff --git a/src/undirected_graph.rs b/src/undirected_graph.rs index 47fdde6b94950ae9a2afc3b0b727cd10d6890ee7..453a88e262fbcc687fef42b14e40f18750d16a46 100644 --- a/src/undirected_graph.rs +++ b/src/undirected_graph.rs @@ -8,12 +8,16 @@ pub struct UndirectedGraph { impl UndirectedGraph { pub fn new(num_vertices: usize, edges: Vec<(usize, usize)>) -> Self { + let mut edges_seen: HashSet<(usize, usize)> = HashSet::new(); for (a, b) in &edges { - assert!(*a < num_vertices && *b < num_vertices, "Edges must be between vertices labeled from 0 to (num_vertices - 1)"); + assert!( + *a < num_vertices && *b < num_vertices, + "Edges must be between vertices labeled from 0 to (num_vertices - 1)" + ); assert!(*a != *b, "Tadpoles are not allowed"); assert!(*b > *a, "Edge endpoints must be in increasing order"); + assert!(edges_seen.insert((*a, *b)), "Double edges are not allowed"); } - // TODO: Check there are no double edges. UndirectedGraph { num_vertices, edges,