# HG changeset patch
# User Balazs Dezso <deba@inf.elte.hu>
# Date 1240081272 -7200
# Node ID 2ca0cdb5f366b786af35f7a426cedf3e7268b0cb
# Parent 293551ad254f3014636873178d16cdd084d37ad7
Fix in HaoOrlin (#264)
diff -r 293551ad254f -r 2ca0cdb5f366 lemon/hao_orlin.h
a
|
b
|
|
226 | 226 | |
227 | 227 | for (NodeIt n(_graph); n != INVALID; ++n) { |
228 | 228 | (*_excess)[n] = 0; |
| 229 | (*_source_set)[n] = false; |
229 | 230 | } |
230 | 231 | |
231 | 232 | for (ArcIt a(_graph); a != INVALID; ++a) { |
… |
… |
|
525 | 526 | |
526 | 527 | for (NodeIt n(_graph); n != INVALID; ++n) { |
527 | 528 | (*_excess)[n] = 0; |
| 529 | (*_source_set)[n] = false; |
528 | 530 | } |
529 | 531 | |
530 | 532 | for (ArcIt a(_graph); a != INVALID; ++a) { |
diff -r 293551ad254f -r 2ca0cdb5f366 test/hao_orlin_test.cc
a
|
b
|
|
111 | 111 | ho.run(); |
112 | 112 | ho.minCutMap(cut); |
113 | 113 | |
114 | | // BUG: The cut value should be positive |
115 | | check(ho.minCutValue() == 0, "Wrong cut value"); |
116 | | // BUG: It should work |
117 | | //check(ho.minCutValue() == cutValue(graph, cap1, cut), "Wrong cut value"); |
| 114 | check(ho.minCutValue() == 1, "Wrong cut value"); |
| 115 | check(ho.minCutValue() == cutValue(graph, cap1, cut), "Wrong cut value"); |
118 | 116 | } |
119 | 117 | { |
120 | 118 | HaoOrlin<SmartDigraph> ho(graph, cap2); |
121 | 119 | ho.run(); |
122 | 120 | ho.minCutMap(cut); |
123 | | |
124 | | // BUG: The cut value should be positive |
125 | | check(ho.minCutValue() == 0, "Wrong cut value"); |
126 | | // BUG: It should work |
127 | | //check(ho.minCutValue() == cutValue(graph, cap2, cut), "Wrong cut value"); |
| 121 | |
| 122 | check(ho.minCutValue() == 1, "Wrong cut value"); |
| 123 | check(ho.minCutValue() == cutValue(graph, cap2, cut), "Wrong cut value"); |
128 | 124 | } |
129 | 125 | { |
130 | 126 | HaoOrlin<SmartDigraph> ho(graph, cap3); |
131 | 127 | ho.run(); |
132 | 128 | ho.minCutMap(cut); |
133 | 129 | |
134 | | // BUG: The cut value should be positive |
135 | | check(ho.minCutValue() == 0, "Wrong cut value"); |
136 | | // BUG: It should work |
137 | | //check(ho.minCutValue() == cutValue(graph, cap3, cut), "Wrong cut value"); |
| 130 | check(ho.minCutValue() == 1, "Wrong cut value"); |
| 131 | check(ho.minCutValue() == cutValue(graph, cap3, cut), "Wrong cut value"); |
138 | 132 | } |
139 | 133 | |
140 | 134 | typedef Undirector<SmartDigraph> UGraph; |
… |
… |
|
145 | 139 | ho.run(); |
146 | 140 | ho.minCutMap(cut); |
147 | 141 | |
148 | | // BUG: The cut value should be 2 |
149 | | check(ho.minCutValue() == 1, "Wrong cut value"); |
150 | | // BUG: It should work |
151 | | //check(ho.minCutValue() == cutValue(ugraph, cap1, cut), "Wrong cut value"); |
| 142 | check(ho.minCutValue() == 2, "Wrong cut value"); |
| 143 | check(ho.minCutValue() == cutValue(ugraph, cap1, cut), "Wrong cut value"); |
152 | 144 | } |
153 | 145 | { |
154 | 146 | HaoOrlin<UGraph, SmartDigraph::ArcMap<int> > ho(ugraph, cap2); |
155 | 147 | ho.run(); |
156 | 148 | ho.minCutMap(cut); |
157 | 149 | |
158 | | // TODO: Check this cut value |
159 | | check(ho.minCutValue() == 4, "Wrong cut value"); |
160 | | // BUG: It should work |
161 | | //check(ho.minCutValue() == cutValue(ugraph, cap2, cut), "Wrong cut value"); |
| 150 | check(ho.minCutValue() == 5, "Wrong cut value"); |
| 151 | check(ho.minCutValue() == cutValue(ugraph, cap2, cut), "Wrong cut value"); |
162 | 152 | } |
163 | 153 | { |
164 | 154 | HaoOrlin<UGraph, SmartDigraph::ArcMap<int> > ho(ugraph, cap3); |
165 | 155 | ho.run(); |
166 | 156 | ho.minCutMap(cut); |
167 | 157 | |
168 | | // TODO: Check this cut value |
169 | 158 | check(ho.minCutValue() == 5, "Wrong cut value"); |
170 | | // BUG: It should work |
171 | | //check(ho.minCutValue() == cutValue(ugraph, cap3, cut), "Wrong cut value"); |
| 159 | check(ho.minCutValue() == cutValue(ugraph, cap3, cut), "Wrong cut value"); |
172 | 160 | } |
173 | 161 | |
174 | 162 | return 0; |