para_graph/graph/
adj_matrix.rs1use itertools::Itertools;
2use petgraph::graph::UnGraph;
3use petgraph::prelude::EdgeRef;
4
5pub fn get_adj_matrix<N>(graph: &UnGraph<N, f64>) -> Vec<Vec<f64>> {
6 let n = graph.node_count();
7 let mut mat: Vec<f64> = vec![f64::INFINITY; n * n];
8 for i in 0..n {
9 mat[i * n + i] = 0.;
10 }
11 for e in graph.edge_references() {
12 let u = e.source().index();
13 let v = e.target().index();
14 let w = *e.weight();
15 mat[u * n + v] = w;
16 mat[v * n + u] = w;
17 }
18 mat.chunks_exact(n).map(|v| v.to_vec()).collect_vec()
19}