bzoj1191(最大匹配,但不完全一样)
2016-06-25 11:57
344 查看
因为要求连续,所以只要到一个位置不能扩展出增广路时,就直接返回答案就行
并且由此得出一个匈牙利算法的性质:
在遍历过程中,只要已经遍历过的节点能扩展出增广路,那么在之后的扩展中,他也一定在匹配的节点集 中,但是二分图另一个节点集则可能会出现变化
并且由此得出一个匈牙利算法的性质:
在遍历过程中,只要已经遍历过的节点能扩展出增广路,那么在之后的扩展中,他也一定在匹配的节点集 中,但是二分图另一个节点集则可能会出现变化
#include<cstdio> #include<algorithm> #include<cstdlib> #include<cmath> #include<cstring> using namespace std; int n,m,a[1009][2],match[1009]; bool use[1009]; bool dfs(int i) { if (use[i]) return false; use[i]=true; int j=a[i][0]; if (!match[j]||dfs(match[j])) { match[j]=i; return true; } j=a[i][1]; if (!match[j]||dfs(match[j])) { match[j]=i; return true; } return false; } int work() { int ans=0; for (int i=1;i<=m;i++) { memset(use,false,sizeof(use)); if (dfs(i)) ans++;else return ans;//这个return不一样!!! } return ans; } int main() { scanf("%d%d",&n,&m); memset(match,0,sizeof(match)); for (int i=1;i<=m;i++) scanf("%d%d",&a[i][0],&a[i][1]); printf("%d",work()); return 0; }
相关文章推荐
- Polygon[IOI1998]
- leetcode #140 in cpp
- Polygon [IOI98,Poj1179]
- windows平台下载webrtc代码和生成vs2015工程(非ninja)
- ShaderLap语法
- 操作符 Thinking in Java 第三章
- 问题--关于同步和异步
- Sql Server之旅——终点站 nolock引发的三级事件的一些思考
- Problem E: 结构体---点坐标结构体
- 网络状态判断工具类
- MySQL Server 5.6
- 用start-stop-daemon启动Nginx
- 进程之间的通信--管道
- net异步编程之await
- php好代码风格的阶段性总结
- Linux学习之系统定时任务
- Tomcat服务器常用配置和HTTP简介
- Struts的有点
- CSS权威指南-特殊性
- 计算原理课堂笔记(二)