uvalive 3268 二分图匹配 或者 最大流
2017-09-27 09:46
295 查看
#include<cstdio> #include<cstring> #include<vector> using namespace std; vector<int>e[2010]; int mat[1010][1010],vis[1010],num[1010],max_flow,n,m; char str[100]; int match(int u){ for(int i=0;i<e[u].size();i++){ int v=e[u][i]; if(!vis[v]){ vis[v]=1; if(num[v]<max_flow){ num[v]++; mat[v][num[v]]=u; return 1; } for(int j=1;j<=num[v];j++) if(match(mat[v][j])){ mat[v][j]=u; return 1; } } } return 0; } int check(int x){ max_flow=x; memset(num,0,sizeof(num)); memset(mat,-1,sizeof(mat)); for(int i=0;i<n;i++){ memset(vis,0,sizeof(vis)); if(!match(i)) return 0; } return 1; } int main(){ while(scanf("%d%d",&n,&m) == 2 && (n+m)){ for(int i=0;i<n;i++) e[i].clear(); for(int i=0;i<n;i++){ scanf("%s",str); char ch=getchar(); while(ch!='\n'){ int t; scanf("%d",&t); e[i].push_back(t); ch=getchar(); } } int l=0,r=n; while(l<r){ int m=(l+r)/2; if(check(m)){ r=m; } else l=m+1; } printf("%d\n",l); } }
相关文章推荐
- UVALive 6652 Game of Throne(一般图最大加权匹配)
- UVa live6492Welcome Party(二分最大匹配之最小点覆盖)
- UVALive - 7008 Tactical Multiple Defense System——二分图最大匹配
- UVALive 6887 Book Club 最大流解最大匹配
- Taxi Cab Scheme UVALive - 3126 最小路径覆盖解法(必须是DAG,有向无环图) = 结点数-最大匹配
- UVALive-5013 Similarity(二分图最大权匹配)
- UVALive - 4043 Ants (二分图最大权匹配)
- UVALive 6322 最大匹配...
- Guardian of Decency UVALive - 3415 最大独立集=结点数-最大匹配数 老师带大学生旅游
- UVaLive 6525 Attacking rooks (二分图最大匹配)
- UVALive 4043 Ants(最大权匹配)
- UVALive 6322 最大匹配
- Similarity HDU 3718||UVALive - 5013 二分图最大权匹配
- UVALive 5033 I'm Telling the Truth 二分图最大匹配(略有修改)
- UVALive - 6887 Book Club (二分图求最大匹配||网络流求最大匹配)
- UVa live3415Guardian of Decency(二分最大匹配之最大独立点集)
- CSU 1623 Inspectors(二分图最大权匹配 KM算法)(UVAlive 6879)
- UVALive 4043 Ants(二分图匹配,最大匹配,4级)
- uva11419 【最大二分匹配求最小点覆盖 匈牙利算法】
- UVA 11419 SAM I AM(最大二分匹配&最小点覆盖:König定理)