dsalgo/
dense_graph_from_edges_with_inf.rs

1pub fn dense_graph_from_edges<T: Clone>(
2    inf: T,
3    n: usize,
4    edges: Vec<(usize, usize, T)>,
5) -> Vec<Vec<T>> {
6    let mut g = vec![vec![inf; n]; n];
7
8    for (u, v, w) in edges.into_iter() {
9        g[u][v] = w;
10    }
11
12    g
13}
14
15#[cfg(test)]
16
17mod tests {
18
19    use super::*;
20
21    #[test]
22
23    fn test() {
24        let inf = 1 << 30;
25
26        let cases = vec![(
27            vec![
28                (0, 0, 0),
29                (0, 1, 1),
30                (1, 1, 0),
31                (1, 2, 2),
32                (2, 1, 3),
33                (2, 2, 0),
34            ],
35            vec![vec![0, 1, inf], vec![inf, 0, 2], vec![inf, 3, 0]],
36        )];
37
38        for (edges, ans) in cases {
39            assert_eq!(dense_graph_from_edges(inf, ans.len(), edges), ans);
40        }
41    }
42}