• 一个看起来舒服的写法:
#include<cstdio>
#include<cstring>
using namespace std;int n,m,edge,head[1005],vis[1005],match[1005],ans,cnt;struct node{int v,next;
}e[1000005];inline void add(int u,int v){e[++cnt].v=v;e[cnt].next=head[u];head[u]=cnt;
}inline bool dfs(int u){for(int i=head[u];i!=-1;i=e[i].next){if(!vis[e[i].v]){vis[e[i].v]=1;if(match[e[i].v]==-1||dfs(match[e[i].v])){match[e[i].v]=u;return 1;}}}return 0;
}int main(){memset(head,-1,sizeof(head));memset(match,-1,sizeof(match));scanf("%d%d%d",&n,&m,&edge);for(int i=1;i<=edge;i++){int u,v;scanf("%d%d",&u,&v);if(u>n||v>m)continue;add(u,v);}for(int i=1;i<=n;i++){memset(vis,0,sizeof(vis));ans+=dfs(i);}printf("%d\n",ans);
}

转载于:https://www.cnblogs.com/Y15BeTa/p/11235921.html

二分图匹配(Luogu3386)相关推荐

  1. Dinic二分图匹配 || Luogu P3386

    题面:[模板]二分图匹配 思路:Dinic实现二分图匹配,要建一个超级源点(S)和超级汇点(T),分别定为N+M+1和N+M+2 然后S去和N中的数建正边和反边,正边权值为1,反边权值为0:M中的数去 ...

  2. 二分图匹配匈牙利算法DFS实现

    1 /*==================================================*\ 2 | 二分图匹配(匈牙利算法DFS 实现) 3 | INIT: g[][]邻接矩阵; ...

  3. poj1274(二分图匹配)

    (一道基础的二分图匹配) 题目意思大概为N个牛和M个栅栏,一个牛和一个栅栏只能匹配一次,求最大匹配 直接套用二分图最大匹配模板即可 #include <iostream> #include ...

  4. poj2724(二分图匹配)

    题目大概意思为有部分奶酪需要处理,若两个奶酪的二进制只有一位不同,则可以一起处理,问最少需要处理几次 题目思路: 将可以一起处理的两个奶酪用边连接在一起,相当于边只连接二进制中有偶数个1的奶酪和二进制 ...

  5. 算法模板——二分图匹配

    实现功能为二分图匹配 原理:匈牙利算法,核心思想--匹配上了就配,没直接匹配上也要通过前面的腾出位置让这个匹配上(详见:趣写算法系列之--匈牙利算法) 本程序以Codevs2776为例 详见Codev ...

  6. 算法:ACM二分图匹配 HDU2063

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2063 摘录于互联网,原创作者redraiment,很详细的二分图匹配入门资料! 2063 过山车 Pr ...

  7. BZOJ1433 [ZJOI2009]假期的宿舍 - 二分图匹配

    题解 一道裸的二分图匹配,稍微有一点细节需要注意, 但是非常裸= = 本校并且住校的向自己的床和 自己认识的并且本校的人的床连边 离校的不需要向外连边 不是本校的就和自己认识的 并且是本校的人的床连边 ...

  8. POJ2536 二分图匹配

    题意:      有n只老鼠,m个洞,每个洞最多可以藏一只老鼠,每个老鼠的移动速度都是v,给你他们的当前坐标,和洞的坐标,突然老鹰来了,他们必须在s秒内跑到一个洞藏起来,问你最少有多少只老鼠被抓走了. ...

  9. URAL 1721 Two Sides of the Same Coin(二分图匹配,输出匹配对象)

    题意:给出n个人的信息,名字.特征.排名. 在排名相差2的前提下,特征为testdata可以与特征为statements的组队,特征为anything可以任何一人组队: 求最多匹配对数,并将每队名字输 ...

  10. zoj3988 二分图匹配

    给一个数组,对于每两个数加起来为素数那么就是一个集合,求不超过k个集合的最多数是多少 解法:二分图匹配,先打素数筛,预处理边集,匹配完之后分两种情况k>匹配数,那么可以直接输出匹配数*2,否则可 ...

最新文章

  1. 【转载】Pytorch在加载模型参数时指定设备
  2. Java类的加载顺序
  3. QT的QBluetoothServiceDiscoveryAgent类的使用
  4. 编写一个Zipkin Server
  5. div覆盖div DIV相互重叠如何解决
  6. 阿里云自带的mysql_阿里云Centos使用自带mysql
  7. location.replace与location.href,location.reload的区别
  8. stm32经典笔试题_嵌入式面试经典30问
  9. [转]Javascript 中 String.replace( ) 的妙用
  10. linux php zend load,在Linux系统中为PHP5.3安装Zend Guard Loader
  11. 群晖NAS设备安装和基础操作详细流程(例:DS920+)
  12. 【GIS小案例】基于Java + Geotools + wContour的等值面图
  13. 坐在自己的命运之中——《大先生》鲁迅一生的最后一分钟
  14. Javascript阻止事件冒泡和浏览器默认行为
  15. pycharm调试bug Process finished with exit code -1073740791 (0xC0000409)
  16. 记一次 ClickHouse 性能测试
  17. pythontkinter图片_Python tkinter实现图片标注功能(完整代码)
  18. 删除PDF其中几页的方法
  19. 第二届“大数据在清华”高峰论坛,敬请期待!
  20. php实现html转word

热门文章

  1. 【mybatis系列】自定义实现拦截器插件Interceptor
  2. Veeam创建复制任务Replication Job
  3. HDU 3662 3D Convex Hull(三维凸包面的个数)
  4. React 的慢与快:优化 React 应用实战
  5. Java基础之面向对象的特征。
  6. openStack Packages yum upgrade
  7. Uva 10305 - Ordering Tasks
  8. Moss/Sharepoint:自定义 Oracle Membership
  9. 查看linux可用磁盘空间_如何在Linux中检查可用磁盘空间
  10. 2019年python黑马_决心在2019年让Python成为您的朋友