Example #1
0
// Ford-Fulkerson algorithm
int maxFlow(const vector<vector<int> > &g, int source, int dest)
{
    vector<vector<int> > residual = g; // residual graph for original graph
    int res = 0, cap = 0;
    while ((cap = findAugmentingPath(residual, source, dest)) > 0)
        res += cap;
    return res;
}
Example #2
0
	void BilateralBFS::solve() {
		while(findAugmentingPath()) {
			processPath();
		}

		int numEdgesInMatching = computeMatchset();
		computeInvitees();

		if(invitees.size() != numEdgesInMatching){
			std::cerr << "Num edges in matching: " << numEdgesInMatching << " does not equal num invitees: " << invitees.size() << "!!!" << std::endl;
		}
	}