传送门

声明几个定义:

1.二分图

对于一个图G=(V,E),若能将其点集分为两个互不相交的两个子集X、Y,使得X∩Y=∅,且对于G的边集V,若其所有边的顶点全部一侧属于X,一侧属于Y,则称图G为一个二分图。

2.二分图匹配

对于一个二分图G的子图M,若M的边集E的的任意两条边都不连接同一个顶点,则称M为G的一个匹配。

3.最大匹配

对于二分图G的一个子图M,若M为其边数最多的子图,则称M为G的最大匹配。

应用“匈牙利算法”求二分图最大匹配。

这种算法可以这样解释:

建立有向图G,分为二分图的左侧和右侧。
优先选择左侧序号更小的连接可能的边。
若两个点的目标点重复,则递归搜索任意一个点能否更换目标点,若不能则这种匹配无法成立。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int mp[1010][1010],fri[1010],flg[1010];
int n,m,e,ans=0;
int find(int x){for(int y=1;y<=m;y++){if(mp[x][y]&&!flg[y]){flg[y]=1;if(find(fri[y])||!fri[y]){fri[y]=x;return 1;} }}return 0;
}int main()
{cin>>n>>m>>e;for(int i=1;i<=e;i++){int u,v;cin>>u>>v;mp[u][v]=1;}for(int i=1;i<=n;i++){memset(flg,0,sizeof(flg));if(find(i)==1) ans++;}cout<<ans;return 0;}

转载于:https://www.cnblogs.com/charlesss/p/10297560.html

P3386二分图最大匹配模版相关推荐

  1. 【洛谷】P3386 【模板】二分图最大匹配

    题目地址: https://www.luogu.com.cn/problem/P3386 题目描述: 给定一个二分图,其左部点的个数为nnn,右部点的个数为mmm,边数为eee,求其最大匹配的边数.左 ...

  2. P3386 【模板】二分图最大匹配

    P3386 [模板]二分图最大匹配 提交71.75k 通过27.33k 时间限制1.00s 内存限制512.00MB 提交答案加入题单 复制题目 题目提供者HOOCCOOH 难度普及+/提高 历史分数 ...

  3. P3386 【模板】二分图最大匹配(匈牙利算法模板)

    题目链接:点击这里 题目大意: 给定一个二分图,其左部点的个数为 nnn ,右部点的个数为 mmm ,边数为 eee ,求其最大匹配的边数. 题目分析: 本题使用的匈牙利算法完成的二分图最大匹配 具体 ...

  4. P3386 【模板】二分图最大匹配 题解

    博客园同步 原题链接 简要题意: 给定两个点集与一些边(保证每条边的顶点属于不同点集),求二分图最大匹配. 解释下:二分图最大匹配 就是 最大的边集使得每两条边都不相交,不共点 的边的个数. 那么你会 ...

  5. 模板--二分图最大匹配

    P3386 [模板]二分图最大匹配 匈牙利算法思想:遍历左部点,对于每个点判断其是否为一条增广路的端点. 核心代码段: 变量解释:a[ i ][ j ]代表左部点与右部点是否有连线,vis为判断是否访 ...

  6. 匈牙利算法求解二分图最大匹配问题

    这是一个非常简单的问题,描述如下,给你两部分的点,问你最大匹配数是多少. 简单描述一下算法流程,首先我们先匹配左边,蓝1先匹配红2:接下来到蓝2,只能匹配红2,但是这这时候发现红2已经有主了,根据匈牙 ...

  7. 二分图最大匹配(匈牙利算法,Dinic网络流算法)

    二分图最大匹配 二分图最大匹配问题: 有两个集合A,B,两个集合间有多条边连接集合中的点,且单个集合中的点各不相连,求两集合的点能两两配对的最大匹配数. (参考:)二分图最大匹配--匈牙利算法 匈牙利 ...

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

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

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

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

最新文章

  1. Cache Aside Pattern(缓存模式)
  2. golang红包算法
  3. How to become the truely yourself?
  4. [蓝桥杯2016初赛]报纸页数-生活常识+思维
  5. 实例14:python
  6. 【专栏精选】Unity中的HTTP网络通信
  7. 反恐精英的服务器存在哪个文件夹,反恐精英地图放在哪里 CS1.6地图放置位置详细介绍_游侠网...
  8. it 脑裂_脑裂官方版下载
  9. 数据--第48课 - 顺序表和有序表查找
  10. 在B/S开发中经常用到的javaScript技术(转载)
  11. 谈谈教学视频加密、防录屏的方法
  12. 加密WebSphere Application Server系统密码
  13. AiTrust下预训练和小样本学习在中文医疗信息处理挑战榜CBLUE表现
  14. 转 适合wince初学者的一些 知识
  15. 多图详解缓冲区溢出问题
  16. 签到方式出“新招”!人脸识别考勤系统
  17. kettle 邮件服务器,kettle 实用功能之三 ---- 使用 kettle 群发动态内容的邮件。
  18. 支持生僻字且自动识别utf-8编码的php汉字转拼音类,PHP汉字转拼音类(支持生僻字且自动识别utf-8编码)...
  19. IP2188-Datasheet
  20. 超市收银系统无法连接服务器,超市收银系统常见问题介绍与回答

热门文章

  1. 九段刀客:Windows下配置Jenkins自动打包vue
  2. 【Arduino】坐姿检测器
  3. Transformer讲解(三)- CV变形金刚-ViT知识介绍
  4. Google 主页空间测试报告
  5. linux环境下tomcat配置PHP
  6. c语言用二维数组查找负数,[抄道题] 在二维数组中找某数
  7. JavaScript数据结构和算法笔记一(前八章)
  8. QGraphicsView图形视图框架使用(六)图元动画
  9. 做网站需要多少钱?做网站的费用是多少呢?
  10. 腾讯云服务器支持,腾讯云服务器能拿来干嘛(可以做的事情很多)