1 subroutine rectblk ( nrows , ncols , marked, unmrkd, colstr,
2 $ rowidx, colset, rowset, prevcl, tryrow,
3 $ colmrk, rowmrk, nhrows, nhcols )
65 integer nrows, ncols, marked, unmrkd, nhcols, nhrows
67 integer colstr (nrows+1), rowidx (*), rowset (nrows),
70 integer prevcl (ncols), tryrow (ncols), colmrk (ncols),
77 integer col, fromc, nextcl, nextrw, p, row, xrow
90 if ( colset(p) .eq. 0 )
then
101 colmrk(fromc) = marked
102 tryrow(fromc) = colstr(fromc)
118 100 nextrw = tryrow(col)
119 do 200 xrow = nextrw, colstr(col + 1) - 1
121 if ( rowmrk(rowidx(xrow)) .eq. unmrkd )
then
131 tryrow(col) = xrow + 1
137 if ( nextcl .eq. 0 )
then
139 60000
format (
' max matching is wrong -- augmenting ',
145 colmrk(nextcl) = marked
147 tryrow(nextcl) = colstr(nextcl)
161 if ( col .ne. 0 )
then
subroutine rectblk(nrows, ncols, marked, unmrkd, colstr, rowidx, colset, rowset, prevcl, tryrow, colmrk, rowmrk, nhrows, nhcols)