题面:

给定一个二分图
求最大匹配

思路:

匈牙利算法,DFS版本。O(V*E)

#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
const int N = 3e6;
vector<int>G[N];
int po[N], book[N], ans;//po[v]表示点v当前的匹配对象。
int find(int u){for(int i = 0; i < G[u].size(); i++){int v = G[u][i];if(!book[v]){//不在交替路中book[v] = 1;//放入交替路if(po[v]==0||find(po[v])){//当前点未用或最终未用,交替路是增广路。po[v] = u;//匹配成功return true;}}}return false;
}
int main(){int nl, nr, m;cin>>nl>>nr>>m;for(int i = 1; i <= m; i++){int x, y;  cin>>x>>y;G[y].push_back(x);}for(int i = 1; i <= nr; i++){memset(book,0,sizeof(book));if(find(i)){ans++;}}cout<<ans<<"\n";for(int i = 1; i <= nl; i++)cout<<po[i]<<" ";return 0;
}

参考资料:

二分图

【UOJ78】二分图最大匹配相关推荐

  1. 【网络流24题】解题报告:A、飞行员配对方案问题(最大流求二分图最大匹配)

    A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] 题目链接 [问题分析] 二分图最大匹配问题. [建模方法] 在二分图的基础上增加源S和汇T. 1.S向X集合中每个顶点连一条容 ...

  2. 【模板】匈牙利算法 二分图最大匹配题模板

    [任务] 给定一个二分图,用匈牙利算法求这个二分图的最大匹配数. [说明] 求最大匹配,那么我们希望每一个在左边的点都尽量找到右边的一个点和它匹配. 我们一次枚举左边的点x的所有出边指向的点y, 若y ...

  3. 51nod 2006 飞行员配对(二分图最大匹配) 裸匈牙利算法 求二分图最大匹配题

    题目: 题目已经说了是最大二分匹配题, 查了一下最大二分匹配题有两种解法, 匈牙利算法和网络流. 看了一下觉得匈牙利算法更好理解, 然后我照着小红书模板打了一遍就过了. 匈牙利算法:先试着把没用过的左 ...

  4. 2021牛客多校3 - Minimum grid(二分图最大匹配-最大流)

    题目链接:点击查看 题目大意:给出一个 n∗nn*nn∗n 的棋盘,其中有 mmm 个位置是需要填数字的位置,每个位置需要填 [0,k][0,k][0,k] 的数字中的其中一个,可以重复,现在给出每一 ...

  5. HDU - 1054 Strategic Game(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一棵树,现在要在节点上放置士兵,每个士兵可以监视与其所在的节点直接相连的节点,问最少需要多少个士兵才能将整棵树都监视到 题目分析:求最少的节点,以保证每条边都有一个端 ...

  6. HDU - 2389 Rain on your Parade(Hopcroft-Krap算法求二分图最大匹配)

    题目链接:点击查看 题目大意:给出n个人和m个雨伞,t分钟后就要下雨了,现在给出每个人的坐标和速度,以及雨伞所在的坐标,每个雨伞只能容纳一个人,题目问最多有多少个人能不被淋到 题目分析:二分图最大匹配 ...

  7. POJ - 2226 Muddy Fields(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一个n*m的地图,地图中'*'代表泥地,'.'代表空地,现在我们有两种木板,一种可以覆盖一行中的任意长度,我们成为行木板,另一种可以覆盖一列中的任意长度,我们成为列木 ...

  8. HDU - 1528 Card Game Cheater(二分图最大匹配)

    题目链接:点击查看 题目大意:题意有点像求田忌赛马的最优解,大概意思就是现在有两个人,每个人都有n张不同的扑克牌,扑克牌的大小首先以点数来确定,点数相同的情况下以花色来决定,红桃(Heart)> ...

  9. HDU - 1150 Machine Schedule(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:现在有一个机器A和一个机器B,A机器有n种模式,B机器有m种模式,现在有k次工作需要完成,每次工作的信息为: id x y:编号为id,在A机器要用x模式完成,在B机器要 ...

  10. CodeForces - 387D George and Interesting Graph(二分图最大匹配+暴力)

    题目链接:点击查看 题目大意:给出n个点和m条边组成的有向图,现在我们需要找出一个点作为中心点,然后增加或减少边的条数以达到下面的目标: 除了中心点外,其他的每个点的入度为2且出度为2 中心点和每个点 ...

最新文章

  1. python 查找文件内容性能 grep_使用grep查找文件中指定字符出现的次数
  2. pip安装ipython_Python -- 关于pip安装Ipython
  3. http响应最大时长 nginx_nginx反向代理时如何保持长连接
  4. Mysql安装 定期弹出黑框作用及关闭
  5. jenkins上linux-gradle机器对android执行shell签名apk
  6. Java LocalDate类| getChronology()方法与示例
  7. python获取网络信息_利用psutil获取网络信息
  8. 信息学奥赛一本通C++语言——1109:开关灯
  9. 细说安防宽动态:背光补偿与二次曝光
  10. PHP中提问频率最高的11个面试题和答案
  11. 【转】OCaml基础知识
  12. 【学习笔记】【OC语言】继承
  13. android版 wifi伴侣,wifi伴侣下载|wifi伴侣安卓版2016最新版 3.7.5 - 系统天堂
  14. 还在忍受磁力搜索网站不忍直视的广告么?18年最新最好用的bt磁力搜索网站介绍
  15. 开源遥感软件(未完待续)
  16. 基于JAVA养老院管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
  17. 【计科快速入门】五、算术逻辑单元
  18. 微信小程序时间标签和时间范围的联动
  19. 黑五节日营销,Facebook广告投放指南
  20. 软件第三方检测中心怎么选择,具备CNAS资质的确认测试报告有什么用?

热门文章

  1. 跨编程语言平台的通信
  2. 长度、面积、体积的相似比原理
  3. Matlab Tricks(五)—— shuffle 一个矩阵
  4. 趣学 C 语言(八)—— 文件内部位置
  5. CentOS SELinux
  6. hadoop 命令行相关操作
  7. python安装目录结构_1.5 python安装目录介绍《Python基础开发入门到精通》
  8. error processing request什么意思_从processing到Touchdesigner小教程
  9. python入门经典 财务-财务方面的学生如何学习python?
  10. python怎么使用-如何使用 Python 开始建立