二分图匹配——Hopcroft-Carp算法模板
2017-10-15 10:58
302 查看
Hopcroft-Carp算法讲解
(看了很多blog,这个写得比较详细)
(看了很多blog,这个写得比较详细)
typedef long long LL; using namespace std; const int maxn = 3010; const int INF = 0x3f3f3f3f; bool g[maxn][maxn]; bool vis[maxn]; int dx[maxn],dy[maxn]; int Mx[maxn],My[maxn]; int dis; int GM[maxn][2]; int GN[maxn][2]; int speed[maxn]; double _time; int M,N; bool bfs(int n,int m) { dis = INF; memset(dx,-1,sizeof(dx)); memset(dy,-1,sizeof(dy)); queue <int> que; for(int i = 0; i < n; i++) { if(Mx[i] == -1) { que.push(i); dx[i] = 0; } } while(!que.empty()) { int u = que.front(); que.pop(); if(dx[u] > dis) break; for(int v = 0; v < m; v ++) { if(g[u][v] && dy[v] == -1) { dy[v] = dx[u] + 1; if(My[v] == -1) dis = dy[v]; else { dx[My[v]] = dy[v] + 1; que.push(My[v]); } } } } return dis != INF; } bool dfs(int u,int m) { for(int v = 0; v < m; v++) { if(g[u][v] && !vis[v] && dy[v] == dx[u] + 1) { vis[v] = true; if(My[v] != -1 && dy[v] == dis) continue; if(My[v] == -1 || dfs(My[v],m)) { My[v] = u; Mx[u] = v; return true; } } } return false; } int Max_match(int n,int m) { int all = 0; memset(Mx,-1,sizeof(Mx)); memset(My,-1,sizeof(My)); while(bfs(n,m)) { memset(vis,false,sizeof(vis)); for(int i = 0; i < n; i++) if(Mx[i] == -1 && dfs(i,m)) all++; } return all; }
相关文章推荐
- HDU 2389 Rain on your Parade (二分图匹配(Hopcroft-Carp的算法模板))
- Hopcroft-Carp算法模板【二分图匹配】
- HDU 2389 Rain on your Parade(Hopcroft-Carp算法模板)
- HDU2389_Rain on your Parade_二分图匹配::Hopcroft-Carp模板题
- HDU 2389 Rain on your Parade(二分匹配+Hopcroft-Carp算法模板题)
- kuangbin专题十 HDU2389(Hopcroft-Carp的算法模板)
- [模板]二分图算法-Hopcroft-Carp
- SPOJ 4206 Fast Maximum Matching (二分图最大匹配 Hopcroft-Carp 算法 模板)
- HDU2389(二分图匹配Hopcroft-Carp算法)
- 【模板】解决二分图匹配的强力算法——Hopcroft-Karp算法
- 二分图匹配(Hopcroft-Carp的算法)模版:
- 二分图匹配Hopcroft-Carp算法介绍
- 二分图匹配(Hopcroft-Carp的算法) 模版
- 匈牙利算法(二分图匹配)模板
- HDU2389 Rain on your Parade 二分匹配 Hopcroft-Carp的算法+模版
- [洛谷 3386]【模板】二分图匹配---匈牙利算法
- 比匈牙利算法更好的算法——Hopcroft-Carp算法
- 【模板】二分图匹配/一般图匹配——匈牙利算法/随机匈牙利算法
- HDU 2389 Rain on Your Parader(二分图匹配Hopcroft-Carp)
- hdu2063(二分图匹配 匈牙利算法模板题)