3535 GrB_free(&k); \
3636 GrB_free(&x); \
3737 GrB_free(&C); \
38+ GrB_free(&desc); \
39+ LAGraph_Free((void **)&cI, NULL); \
40+ LAGraph_Free((void **)&cX, NULL); \
3841 GrB_free(&ONE_INT64); \
3942 }
4043
@@ -61,6 +64,8 @@ int LAGr_PartitionQuality(
6164 GrB_Vector k = NULL ;
6265 GrB_Vector x = NULL ;
6366 GrB_Matrix C = NULL ;
67+ GrB_Index * cI = NULL , * cX = NULL ;
68+ GrB_Descriptor desc = NULL ;
6469
6570 GrB_Scalar ONE_INT64 = NULL ;
6671
@@ -109,13 +114,20 @@ int LAGr_PartitionQuality(
109114
110115 // convert the cluster vector to a boolean matrix C where
111116 // C(i, j) = 1 if and only if vertex j is in cluster i
112- GrB_Index * cI , * cX ;
117+
118+ #if LG_SUITESPARSE_GRAPHBLAS_V10
119+ GRB_TRY (GrB_Descriptor_new (& desc )) ;
120+ GRB_TRY (GrB_Descriptor_set (desc , GxB_USE_INDICES , GxB_ROWINDEX_LIST )) ;
121+ GRB_TRY (GxB_Matrix_build_Scalar_Vector (C , c , c , ONE_INT64 , desc ));
122+ GRB_TRY (GrB_free (& desc )) ;
123+ #else
113124 LAGRAPH_TRY (LAGraph_Malloc ((void * * )& cI , n , sizeof (GrB_Index ), msg ));
114125 LAGRAPH_TRY (LAGraph_Malloc ((void * * )& cX , n , sizeof (GrB_Index ), msg ));
115126 GRB_TRY (GrB_Vector_extractTuples_INT64 (cI , (int64_t * ) cX , & n , c ));
116127 GRB_TRY (GxB_Matrix_build_Scalar (C , cX , cI , ONE_INT64 , n ));
117128 LAGraph_Free ((void * * )& cI , NULL );
118129 LAGraph_Free ((void * * )& cX , NULL );
130+ #endif
119131
120132 bool is_undirected = (G -> is_symmetric_structure == LAGraph_TRUE );
121133
0 commit comments