ade_graph_generators/
complete_graph.rs

1pub fn complete_graph_data(n: usize) -> (Vec<u32>, Vec<(u32, u32)>) {
2    let nodes: Vec<u32> = (0..n as u32).collect();
3
4    let mut edges = Vec::new();
5    for &src in &nodes {
6        for &dst in &nodes {
7            if src != dst {
8                edges.push((src, dst));
9            }
10        }
11    }
12
13    (nodes, edges)
14}
15
16#[cfg(test)]
17mod tests {
18    use super::*;
19
20    #[test]
21    fn test_complete_graph_data() {
22        let (nodes, edges) = complete_graph_data(3);
23        assert_eq!(nodes.len(), 3);
24        assert_eq!(edges.len(), 3 * 2);
25
26        let (nodes, edges) = complete_graph_data(4);
27        assert_eq!(nodes.len(), 4);
28        assert_eq!(edges.len(), 4 * 3);
29
30        let (nodes, edges) = complete_graph_data(7);
31        assert_eq!(nodes.len(), 7);
32        assert_eq!(edges.len(), 7 * 6);
33    }
34}