HDU 2063 过山车(最大二分匹配)
来源:互联网 发布:淘宝店如何关闭 编辑:程序博客网 时间:2024/05/21 19:29
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=2063
题目大意:
M个男生,N个女生,男生和女生组合一对过山车,有K种“可”组合对,问可以过山车的最多对数。
参考:
http://kukumayas.iteye.com/blog/1075610(这位仁兄配合图解,解释得很详细)
http://baike.baidu.com/view/501092.htm(百度百科)
心得:
这题要是没找资料,自己想到死都想不出来,压根就没听过这算法,整合已有资源也是种学习。不过,代码要自己敲。
代码:
#include<stdio.h>#include<string.h>int data[505][505];//标记是否可匹配int result[505];//与之匹配的点int flag[505];//标记是否搜索过int ans;int K,M,N;void init(){ans=0;memset(data,0,sizeof(data));memset(result,0,sizeof(result));int v1,v2;for(int i=1;i<=K;i++){scanf("%d%d",&v1,&v2);data[v1][v2]=1;}return;}int find(int a){for(int i=1;i<=N;i++){if(data[a][i]==1&&flag[i]==0)//如果a与i点相邻,且i点未被查找过。{flag[i]=1;if(result[i]==0||find(result[i]))//i未在匹配中或者i在匹配中但从与i相邻的节点出发可以有增广路{result[i]=a;return 1;}}}return 0;}int main(){while(scanf("%d",&K),K){scanf("%d%d",&M,&N);init();for(int i=1;i<=M;i++){memset(flag,0,sizeof(flag));if(find(i)) ans++;}printf("%d\n",ans);}return 0;}
0 0
- HDU 2063 过山车(最大二分匹配)
- hdu 2063 过山车(二分最大匹配)
- HDU 2063过山车(二分最大匹配之最大匹配)
- hdu 2063 过山车 基础最大二分匹配
- hdu 2063 过山车(二分最大匹配)
- HDU 2063 过山车【二分图最大匹配】
- 【HDU 2063】【二分图最大匹配】过山车
- hdu 2063 过山车(二分图最大匹配)
- HDU 2063 过山车 最大二分匹配
- HDU 2063 过山车(二分图最大匹配问题)
- hdu - 2063 - 过山车(二分图最大匹配)
- hdu 2063 过山车(二分图最大匹配,2级)
- HDU 2063 过山车 (二分图的最大匹配)
- HDU:2063 过山车(二分图最大匹配)
- HDU 2063 过山车 【二分图最大匹配(匈牙利模板)】
- hdu 2063 过山车(二分图最大匹配-匈牙利算法)
- 【HDU 2063】过山车(二分图最大匹配模板题)
- hdu 2063 过山车(二分图匹配)
- Eclipse + Java + WindowBuilder 可视化编程
- [WebKit]WebCore之页面加载的设计与实现(三)
- Windows Phone(WP) Loading 加载层用户控件
- 浅析iOS中的MVC
- Myeclipse下修改Web根目录
- HDU 2063 过山车(最大二分匹配)
- Linux Shell编程入门
- itunes无法识别iphone的解决方法
- VLINK 的更新版本
- 婚姻中媒人存在的客观逻辑——leo鉴书45
- 黑马程序员--java基础--多线程
- 【C++基础】公有,私有和受保护的继承
- SPOJ PALIN
- 内核:offsetof + container_of 分析