static void create_cluster_dist_mat( DenseMat& distMat, int cls, std::vector<int>& cluster_nodes, std::vector<WgtType>& nodes_radii, DenseMat& clusterDistMat) { // Steps // 1. resize cluster distance matrix // 2. match the distance from distMat to clusterDistMat // 3. add central node influence // Step 1 clusterDistMat.resize(cluster_nodes.size()+1, cluster_nodes.size()+1); clusterDistMat.fill(0); // Step 2 int rowIdx; int colIdx; for (int c=0; c<cluster_nodes.size(); ++c) { for (int r=0; r<cluster_nodes.size(); ++r) { rowIdx = cluster_nodes.at(r); colIdx = cluster_nodes.at(c); clusterDistMat(r+1, c+1) = distMat(rowIdx, colIdx); } } // Step 3 for (int i=0; i<nodes_radii.size(); ++i) { clusterDistMat(0, i+1) = nodes_radii.at(i); clusterDistMat(i+1, 0) = nodes_radii.at(i); } }