二分图基数最大匹配 匈牙利算法
2013-01-19 22:22
267 查看
二分图匹配主要是建图方法,有行列匹配法,黑白染色法,反建法,拆点法,拆行拆列法..
下面是poj 3041的代码,行列匹配...
下面是poj 3041的代码,行列匹配...
//匈牙利算法,求二分图的最大基数匹配 //动态存边时间复杂度O(nm),矩阵的话时间复杂度O(n^3) #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> using namespace std; #define maxv 1005 vector<int> edge[maxv]; int n,m,k; bool used[maxv]; int match[maxv]; void init() { int i,l,r; // cin>>n>>m; memset(match,0,sizeof(match)); for(i=1;i<=n;++i) edge[i].clear(); for(i=0;i<k;++i) { cin>>l>>r; edge[l].push_back(r); } } bool GetAugPath(int s) { int i,t; for(i=0;i<edge[s].size();++i) { t=edge[s][i]; if(!used[t]) { used[t]=true; if(match[t]==0||GetAugPath(match[t])) { match[t]=s; return true; } } } return false; } int work() { init(); int i,ans=0; for(i=1;i<=n;++i) { memset(used,0,sizeof(used)); if(GetAugPath(i)) ans++; } // cout<<"done"<<endl; return ans; } int main() { int i,l,r; while(cin>>n>>k) { m=n; cout<<work()<<endl; } return 0; }
相关文章推荐
- 匈牙利算法,二分图最大基数匹配(过山车,hdu 2063)
- 用匈牙利算法求二分图的最大匹配
- [hihoCoder] #1122 : 二分图二•二分图最大匹配之匈牙利算法
- 二分图的最大匹配 匈牙利算法
- 二分图之最大匹配(匈牙利算法)
- 二分图最大匹配——匈牙利算法
- hihoCoder#1122(二分图最大匹配之匈牙利算法)
- UVA - 12083 Guardian of Decency 匈牙利算法(二分图最大匹配)
- 【学会就脱单算法】匈牙利算法之飞行员配对问题(二分图最大匹配)
- 二分图最大匹配---匈牙利算法BFS 实现
- 二分图最大匹配之匈牙利算法
- 二分图的最大匹配(匈牙利算法)
- 用匈牙利算法求二分图的最大匹配
- poj1274 匈牙利算法 二分图最大匹配
- 匈牙利算法模板 二分图最大匹配
- 匈牙利算法求二分图的最大匹配----杭电ACM
- 二分图的最大匹配—匈牙利算法
- 二分图的最大匹配、完美匹配和匈牙利算法
- HDOJ 2063 过山车【匈牙利算法求二分图最大匹配 DFS增广 BFS增广】
- poj 3894 System Engineer (二分图最大匹配--匈牙利算法)