hdu2603
2013-07-29 13:26
429 查看
#include <cstdio> #include <vector> #include <iostream> #include <algorithm> #include <cstring> using namespace std; const int M=2001; int k,m,n; vector<int> v[M]; int mat[M]; bool mark[M]; void delete_(int m) { for(int i=0;i<m;i++) { v[i].clear(); mark[i]=0; mat[i]=-1; } } bool find_(int i) { for(int j=0;j<v[i].size();j++) { if(!mark[v[i][j]]) { mark[v[i][j]]=1; if(mat[v[i][j]]==-1||find_(mat[v[i][j]])) { mat[v[i][j]]=i; return 1; } } } return 0; } int Hungary(int n) { int max=0; for(int i=0;i<n;i++) { if(find_(i))max++; for(int j=0;j<n;j++)mark[j]=0; } return max; } int main() { while(cin>>k,k) { cin>>m>>n; delete_(m>n?m:n); for(int i=0,x,y;i<k;i++) { cin>>x>>y; v[x-1].push_back(y-1); } cout<<Hungary(m>n?m:n)<<endl; } return 0; }
相关文章推荐
- 无向图的最小边覆盖
- POJ 2112 (二分图多重匹配)
- poj-1469,1274 二分图匈牙利算法
- poj1422
- HDU-2444 二分图的判别和最大匹配数。
- HDU Problem B
- Problem F
- HDU1083(二分图+最大匹配+匈牙利算法)
- HDU1150(二分图+最大匹配+匈牙利算法)
- hdu2063(最大匹配+匈牙利算法)
- hdu4619(二分图+匈牙利算法)
- hdu2119(二分图+最小点覆盖+匈牙利算法)
- hdu1054(二分图+最小点覆盖数+匈牙利算法)
- hdu2458(二分图+最大独立数+匈牙利算法)
- hdu2236(二分法)
- 二分图的最大匹配 (匈牙利算法)
- 宝藏
- 过山车(HDU 2063)
- HDU5729 Rigid Frameworks
- [二分图] hdu 5729 Rigid Frameworks