展开

题目背景

二分图

感谢@一扶苏一 提供的hack数据

题目描述

给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数

输入格式

第一行,n,m,e

第二至e+1行,每行两个正整数u,v,表示u,v有一条连边

输出格式

共一行,二分图最大匹配

输入输出样例

输入 #1复制

1 1 1
1 1

输出 #1复制

1

因为数据有坑,可能会遇到 v>m 或者 u>n 的情况。请把 v>m 或者 u>n的数据自觉过滤掉。

算法:二分图匹配

AC Code:

#include<iostream>
#include<cstring>
#include<queue>
#include<map>
#include<set>
#include<stack>
#include<cstdio>
#include<sstream>
#include<vector>
#include<bitset>
#include<algorithm>using namespace std;
#define read(x) scanf("%d",&x)
#define Read(x,y) scanf("%d%d",&x,&y)
#define gc(x)  scanf(" %c",&x);
#define mmt(x,y)  memset(x,y,sizeof x)
#define write(x) printf("%d\n",x)
#define pii pair<int,int>
#define INF 0x3f3f3f3f
#define ll long long
const ll mod =  998244353;
const int N = 1e6 + 1000;
const int M = 2e6 + 1005;
struct Edge
{int next;int to;
}edge[N];
int head[N],tot;
inline void add(int from,int to){edge[++tot].next = head[from];edge[tot].to = to;head[from] = tot;
}
bool vis[N];int match[N];
bool dfs(int x){for(int i = head[x],y;~i;i = edge[i].next){if(!vis[y = edge[i].to]){vis[y] = 1;if(!match[y]||dfs(match[y])){match[y] = x;return true;}}}return false;
}
inline void init(){mmt(head,-1);tot = 0;
}
int main()
{int n,m,k;Read(n,m);read(k);int u,v;init();for(int i =1 ;i <= k;++i){Read(u,v);if(u > n||v > m) continue;add(u,v + n);add(v + n,u);}int ans = 0;for(int i = 1;i <= n + m ;++i){mmt(vis,0);if(dfs(i)) ans ++;}cout<<ans<<endl;
}

P3386 【模板】二分图匹配(匈牙利算法)相关推荐

  1. nyoj-239 月老的难题 (二分图匹配—匈牙利算法 网络流—Dinic算法)

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  2. 二分图匹配--匈牙利算法

    文章目录 二分图: 匹配 匈牙利算法 代码: 二分图: 二分图是一个无向图,点集分成子集X和Y,图中每一条边都是一边在X一边在Y 当且仅当无向图G的每一个回路次数都是偶数时(包括0),G就是一个二分图 ...

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

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

  4. 二分图匹配——匈牙利算法

    匈牙利算法 什么是匈牙利算法 匈牙利算法是一种在多项式时间内求解任务分配问题的组合优化算法,并推动了后来的原始对偶方法.美国数学家哈罗德·库恩于1955年提出该算法.此算法之所以被称作匈牙利算法,是因 ...

  5. Codevs 1222 信与信封问题 二分图匹配,匈牙利算法

    题目: http://codevs.cn/problem/1222/ 1222 信与信封问题   时间限制: 1 s   空间限制: 128000 KB   题目等级 : 钻石 Diamond 题解 ...

  6. 二分图匹配-匈牙利算法

    说到二分,我们就很容易想到二分查找算法,今年下半年--,今天所介绍的二分图和二分查找没有太大的联系,我们先来看一下它的定义: 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图 ...

  7. HDU 2063 过山车 二分图匹配 匈牙利算法

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  8. 二分图匹配----匈牙利算法之二

    poj 1469 COURSES //题意:现在有p门课程和n个学生,现在需要有由p个学生组成的组织,该组织满足每个学生代表一门课程以及每门课程只能由一个学生代表, //现给出每门课程都有哪些学生可以 ...

  9. 【CF1139E】Maximize Mex - 二分图匹配 - 匈牙利算法

    [题目链接] https://www.luogu.com.cn/problem/CF1139E [题目描述] 有n个学生,第i个学生在俱乐部c_i,并拥有一个能力值a_i.在接下来的d天中,每天会有一 ...

  10. 二分图的匹配——匈牙利算法

    什么是匹配 匹配:在图论中,一个「匹配」是一个边的集合,其中任意两条边都没有公共顶点. 最大匹配:一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配. 二分图的匹配:给定一个二分图G,在G ...

最新文章

  1. 汇编语言 第3版 王爽 检测点习题部分—答案及详细解析
  2. SQL拆分实现与注意事项
  3. noj 邮票分你一半z的生日
  4. java form action 参数_java发起form请求(有参数,无参数)
  5. ASCII+Unicode+UTF8(字符编码方式-字节) Base64(字节编码方式-64字符)
  6. spring Aop的概念
  7. 字母框如何影响UI内容的理解
  8. 计算机教师专业发展论文,关于教师专业发展的计算机专业论文
  9. 《搜索算法——DFS、BFS、回溯》
  10. python2.7升级到python3.6注意事项
  11. Python实战从入门到精通第十二讲——给函数参数增加元信息
  12. 软件测试——测试基础
  13. 最简单的基于FFmpeg的移动端例子附件:SDL Android HelloWorld
  14. 谷歌:光靠软件修复不能完全防御“幽灵”漏洞
  15. php如何去除字符串中的空格,php如何去除字符串中的空格
  16. 2019强网杯部分writeup
  17. 掉头发厉害,是为什么呢?
  18. 统计|两个总体方差比的区间估计(用公式计算)
  19. 【香橙派4B】1、重刷系统
  20. 【BLE】CC2541之动态广播加密数据

热门文章

  1. Halcon 第三章『Morphology形态学』◆第3节:顶帽运算与底帽运算
  2. BufferQueue has been abandoned解决方案
  3. net has only one pin的解决方法
  4. 说句心里话python怎么写_说句心里话作文
  5. 基于OpenPose的坐姿识别
  6. error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “pch.h“
  7. 基于Web服务的PDF 排版引擎 XDOC(mini)发布
  8. 技术产品人如何快速成长?
  9. Deep Learning for 3D Point Clouds: A Survey - 3D点云的深度学习:一项调查 (IEEE TPAMI 2020)
  10. HP Smart Tank 518 在 macOS 下如何进行手动双面打印