Determine the maximum flow of a tree, that is, the sum of the maximum flow of leaves, that is, the flow of the whole tree.
The outbound traffic of each non-leaf node in the tree = min (inbound traffic, path capacity ).
Knowing this, we can solve this problem simply by using recursion.
Unfortunately, I wrote this after reading the answer.
/* 9-12-12-15-15.53.c -- Chapter 9, 12th */<br/>/* pseudo code */</P> <p> flowtype findmaxflow (const tree T, flowtype incomingflow ); </P> <p> flowtype findmaxflow (const tree T, flowtype incomingflow) <br/>{< br/> flowtype childflow, totalflow; </P> <p> If (isleaf (t) <br/> return incomingflow; <br/> else <br/>{< br/> totalflow = 0; <br/> for each child Ti of T <br/> {<br/>/* It is important to make sure that incomingflow is the smallest flow between incomingflow and CI */< br/> childflow = findmaxflow (Ti, min (incomingflow, CI); <br/> totalflow + = childflow; <br/> incomingflow-= childflow; <br/>}< br/> return totalflow; <br/>}< br/>}
Of course, this code is self-written.