2
* (ek,dmin, v,l, head,last,next, mark)
4
c***********************************************************************
5
c mdu -- update degrees of uneliminated vertices in ek
6
c***********************************************************************
7
integer ek, dmin, v(1), l(1), head(1), last(1), next(1),
8
* mark(1), tag, vi,evi,dvi, s,vs,es, b,vb, ilp,ilpmax,
13
tag = mark(ek) - last(ek)
15
c----for each vertex vi in ek
18
if (ilpmax.le.0) go to 11
22
if (last(vi)) 1, 10, 8
24
c------if vi neither prototype nor duplicate vertex, then merge elements
25
c------to compute degree
29
c--------for each vertex/element vs/es in element list of vi
34
if (next(vs).lt.0) go to 3
36
c----------if vs is uneliminated vertex, then tag and adjust degree
41
c----------if es is active element, then expand
42
c------------check for outmatched vertex
43
3 if (mark(es).lt.0) go to 6
45
c------------for each vertex vb in es
52
c--------------if vb is untagged, then tag and adjust degree
53
if (mark(vb).ge.tag) go to 4
60
c------else if vi is outmatched vertex, then adjust overlaps but do not
63
mark(es) = mark(es) - 1
67
if (mark(es).lt.0) mark(es) = mark(es) - 1
70
c------else if vi is prototype vertex, then calculate degree by
71
c------inclusion/exclusion and reset overlap count
73
dvi = last(ek) + last(evi) + mark(evi)
76
c------insert vi in appropriate degree list
77
9 next(vi) = head(dvi)
80
if (next(vi).gt.0) last(next(vi)) = vi
81
if (dvi.lt.dmin) dmin = dvi