最大匹配BPM模版(LRJ)
2013-03-19 13:02
190 查看
const int maxn = 500 + 5; // 单侧顶点的最大数目 // 二分图最大基数匹配,邻接矩阵写法 struct BPM { int n, m; // 左右顶点个数 int G[maxn][maxn]; // 邻接表 int left[maxn]; // left[i]为右边第i个点的匹配点编号,-1表示不存在 bool T[maxn]; // T[i]为右边第i个点是否已标记 void init(int n, int m) { this->n = n; this->m = m; memset(G, 0, sizeof(G)); } bool match(int u){ for(int v = 0; v < m; v++) if(G[u][v] && !T[v]) { T[v] = true; if (left[v] == -1 || match(left[v])){ left[v] = u; return true; } } return false; } // 求最大匹配 int solve() { memset(left, -1, sizeof(left)); int ans = 0; for(int u = 0; u < n; u++) { // 从左边结点u开始增广 memset(T, 0, sizeof(T)); if(match(u)) ans++; } return ans; } }; BPM solver;
时间复杂度 邻接矩阵:最坏为O(n^3) 邻接表:O(mn) 。图中点的编号从0开始。
相关文章推荐
- hdu2063(最大匹配--模版题)
- 二分匹配 模版 及最大总结 及 题目集合 +解析
- 最大流Dinic模版(LRJ)
- hdu 2389 Rain on your Parade(最大匹配,Hopcroft-Karp算法模版)
- HDU 1083 Courses(最大匹配模版题)
- HDU 1083 Courses(最大匹配模版题)
- POJ 2239 二分图最大匹配模版
- 二分图最大匹配数模版
- CF 277.5 B.BerSU Ball 二分图的最大匹配 模版题
- NYOJ239月老的难题(二分图的最大匹配模版)
- hoj 2524 Allocate Dormitories 二分图的最大匹配
- 二分图匹配 最大匹配数+最大点覆盖 POJ 1469+POJ 3041
- HDU 1281 — 棋盘游戏 最大匹配
- hdu2063 最大匹配数(匈牙利算法)
- POJ3614 优先队列+贪心or二分图最大匹配(网络流)
- 51NOD-2006 飞行员配对(二分图最大匹配)
- 二分图最大匹配:匈牙利算法(poj3041)
- POJ 3020 / POJ 3041 关于二分图最大匹配的一些变形
- 【UOJ 80】 二分图最大权匹配
- poj1034 The dog task 最大匹配