*/
public static Dcsd cs_dmperm(Dcs A, int seed) {
int m, n, i, j, k, cnz, nc, jmatch[], imatch[], wi[], wj[], pinv[], Cp[], Ci[], ps[], rs[], nb1, nb2, p[], q[], cc[], rr[], r[], s[];
boolean ok;
Dcs C;
Dcsd D, scc;
/* --- Maximum matching ------------------------------------------------- */
if (!Dcs_util.CS_CSC(A))
return (null); /* check inputs */
m = A.m;
n = A.n;