二分图最大匹配模板
?
/*匈牙利算法DFS版*/ const int MAXN=300; //最大頂點(diǎn)數(shù) bool bmap[MAXN][MAXN]; //二分圖 bool bmask[MAXN]; //尋找增廣路徑時(shí)的標(biāo)志數(shù)組 int nx,ny; //nx為左集合的頂點(diǎn)數(shù)目,ny為右集合的頂點(diǎn)數(shù)目。 int cx[MAXN], cy[MAXN]; //cx[i]表示左集合i頂點(diǎn)所匹配到的右集合的頂點(diǎn)序號(hào),cy[i]同理。//尋找增廣路徑 int findPath(int u){rep(i,1,ny){if(bmap[u][i]&&!bmask[i]){bmask[i]=true;if(cy[i]==-1||findPath(cy[i])){cy[i]=u;cx[u]=i;return 1;}}}return 0; }//求最大匹配 int MaxMatch(){int ans = 0;rep(i,1,n) cx[i]=cy[i ]=-1;rep(i,1,n) if(cx[i]==-1){mem(bmask,false);ans += findPath(i);}return ans; }int main(){/*根據(jù)題意構(gòu)圖..*/return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/fish7/p/4088179.html
總結(jié)
- 上一篇: UIWebView与JavaScript
- 下一篇: 百度员工 离职总结