106 |
106 |
107 |
107 |
108 ///Indicates the property of the starting flow map. |
108 ///Indicates the property of the starting flow map. |
109 |
109 |
110 ///Indicates the property of the starting flow map. |
110 ///Indicates the property of the starting flow map. |
111 ///The meanings are as follows: |
|
112 ///- \c ZERO_FLOW: constant zero flow |
|
113 ///- \c GEN_FLOW: any flow, i.e. the sum of the in-flows equals to |
|
114 ///the sum of the out-flows in every node except the \e source and |
|
115 ///the \e target. |
|
116 ///- \c PRE_FLOW: any preflow, i.e. the sum of the in-flows is at |
|
117 ///least the sum of the out-flows in every node except the \e source. |
|
118 ///- \c NO_FLOW: indicates an unspecified edge map. \c flow will be |
|
119 ///set to the constant zero flow in the beginning of |
|
120 ///the algorithm in this case. |
|
121 /// |
111 /// |
122 enum FlowEnum{ |
112 enum FlowEnum{ |
|
113 ///indicates an unspecified edge map. \c flow will be |
|
114 ///set to the constant zero flow in the beginning of |
|
115 ///the algorithm in this case. |
123 NO_FLOW, |
116 NO_FLOW, |
|
117 ///constant zero flow |
124 ZERO_FLOW, |
118 ZERO_FLOW, |
|
119 ///any flow, i.e. the sum of the in-flows equals to |
|
120 ///the sum of the out-flows in every node except the \c source and |
|
121 ///the \c target. |
125 GEN_FLOW, |
122 GEN_FLOW, |
|
123 ///any preflow, i.e. the sum of the in-flows is at |
|
124 ///least the sum of the out-flows in every node except the \c source. |
126 PRE_FLOW |
125 PRE_FLOW |
127 }; |
126 }; |
128 |
127 |
129 ///Indicates the state of the preflow algorithm. |
128 ///Indicates the state of the preflow algorithm. |
130 |
129 |
131 ///Indicates the state of the preflow algorithm. |
130 ///Indicates the state of the preflow algorithm. |
132 ///The meanings are as follows: |
|
133 ///- \c AFTER_NOTHING: before running the algorithm or |
|
134 /// at an unspecified state. |
|
135 ///- \c AFTER_PREFLOW_PHASE_1: right after running \c phase1 |
|
136 ///- \c AFTER_PREFLOW_PHASE_2: after running \ref phase2() |
|
137 /// |
131 /// |
138 enum StatusEnum { |
132 enum StatusEnum { |
|
133 ///before running the algorithm or |
|
134 ///at an unspecified state. |
139 AFTER_NOTHING, |
135 AFTER_NOTHING, |
|
136 ///right after running \ref phase1() |
140 AFTER_PREFLOW_PHASE_1, |
137 AFTER_PREFLOW_PHASE_1, |
|
138 ///after running \ref phase2() |
141 AFTER_PREFLOW_PHASE_2 |
139 AFTER_PREFLOW_PHASE_2 |
142 }; |
140 }; |
143 |
141 |
144 protected: |
142 protected: |
145 FlowEnum flow_prop; |
143 FlowEnum flow_prop; |
166 flow_prop(NO_FLOW), status(AFTER_NOTHING) { |
164 flow_prop(NO_FLOW), status(AFTER_NOTHING) { |
167 if ( _source==_target ) |
165 if ( _source==_target ) |
168 throw InvalidArgument(); |
166 throw InvalidArgument(); |
169 } |
167 } |
170 |
168 |
171 |
169 ///Give a reference to the tolerance handler class |
172 |
170 |
|
171 ///Give a reference to the tolerance handler class |
|
172 ///\sa Tolerance |
|
173 TOL &tolerance() { return surely; } |
|
174 |
173 ///Runs the preflow algorithm. |
175 ///Runs the preflow algorithm. |
174 |
176 |
175 ///Runs the preflow algorithm. |
177 ///Runs the preflow algorithm. |
176 /// |
178 /// |
177 void run() { |
179 void run() { |