1 subroutine mmc13e ( nrows , ncols , nhcols, nhrows, nscols,
2 $ sqindx, hrzcmp, rowstr, colind, colset,
3 $ trycol, cbegin, lowlnk, prev , colmrk,
4 $ ccmstr, rcmstr, cnto , rnto , sqcmpn )
85 integer nrows , ncols , nhcols, nhrows, nscols,
86 $ sqindx, hrzcmp, sqcmpn
88 integer rowstr (nrows+1), colind (*), colset (ncols)
90 integer trycol (nrows), cbegin (nscols), lowlnk (ncols),
93 integer colmrk (ncols), cnto (ncols), rnto (nrows),
94 $ ccmstr(*) , rcmstr(*)
100 integer cmpbeg, col , compnt, count , passes, fcol ,
101 $ fnlpos, frow , rootcl, j , pair , scol ,
118 do 100 col = 1, ncols
119 if ( colmrk(col) .eq. sqindx )
then
125 trycol(j) = rowstr(j)
132 do 700 rootcl = 1, ncols
134 if ( colmrk(rootcl) .eq. 0 )
then
145 cbegin(nscols) = fcol
152 do 600 passes = 1, 2*nscols - 1
161 if ( trycol(frow) .gt. 0 )
then
170 do 300 xcol = trycol(frow), rowstr(frow+1)-1
173 if ( colmrk(scol) .eq. 0 )
then
180 trycol(frow) = xcol + 1
186 cbegin(nscols+1-count) = fcol
190 $
if ( colmrk(scol) .gt. 0 )
then
197 if (lowlnk(scol) .lt. lowlnk(fcol))
then
198 lowlnk(fcol) = lowlnk(scol)
215 if ( lowlnk(fcol) .ge. colmrk(fcol) )
then
227 do 400 stackp = nscols + 1 - count, nscols
228 pair = cbegin(stackp)
230 colmrk(pair) = fnlpos
232 lowlnk(pair) = nscols + 1
233 if ( pair .eq. fcol ) go to 500
240 500 cbegin(sqcmpn) = cmpbeg
248 if ( count .eq. 0 )
then
249 if ( fnlpos .lt. nscols )
then
264 if ( lowlnk(scol) .lt. lowlnk(fcol) )
then
265 lowlnk(fcol) = lowlnk(scol)
278 800
do 900 compnt = 1, sqcmpn
279 ccmstr(compnt + hrzcmp) = (cbegin(compnt) + nhcols)
280 rcmstr(compnt + hrzcmp) = (cbegin(compnt) + nhcols) -
284 ccmstr(hrzcmp + sqcmpn + 1) = nhcols + nscols + 1
285 rcmstr(hrzcmp + sqcmpn + 1) = nhrows + nscols + 1
293 do 1000 col = 1, ncols
296 cnto(nhcols + j) = col
297 rnto(nhrows + j) = colset(col)
subroutine mmc13e(nrows, ncols, nhcols, nhrows, nscols, sqindx, hrzcmp, rowstr, colind, colset, trycol, cbegin, lowlnk, prev, colmrk, ccmstr, rcmstr, cnto, rnto, sqcmpn)