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

提交71.75k

通过27.33k

时间限制1.00s

内存限制512.00MB

提交答案加入题单

复制题目

题目提供者HOOCCOOH

难度普及+/提高

历史分数100

提交记录  查看题解

标签

O2优化

查看算法标签

进入讨论版

相关讨论

查看讨论

推荐题目

查看推荐

洛谷推荐关闭

展开

题目描述

给定一个二分图,其左部点的个数为 nn,右部点的个数为 mm,边数为 ee,求其最大匹配的边数。

左部点从 11 至 nn 编号,右部点从 11 至 mm 编号。

输入格式

输入的第一行是三个整数,分别代表 nn,mm 和 ee。

接下来 ee 行,每行两个整数 u, vu,v,表示存在一条连接左部点 uu 和右部点 vv 的边。

输出格式

输出一行一个整数,代表二分图最大匹配的边数。

输入输出样例

输入 #1复制

1 1 1
1 1

输出 #1复制

1

输入 #2复制

4 2 7
3 1
1 2
3 2
1 1
4 2
4 1
1 1

输出 #2复制

2

说明/提示

数据规模与约定

对于全部的测试点,保证:

  • 1 \leq n, m \leq 5001≤n,m≤500。
  • 1 \leq e \leq 5 \times 10^41≤e≤5×104。
  • 1 \leq u \leq n1≤u≤n,1 \leq v \leq m1≤v≤m。

不保证给出的图没有重边

【AC代码】

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
const int INF=0x3f3f3f3f;
inline int read()
{char ch=getchar();int n=0,m=1;while(ch<'0'||ch>'9'){if(ch=='-')m=-1;ch=getchar();}while(ch>='0'&&ch<='9')n=(n<<3)+(n<<1)+ch-48,ch=getchar();return n*m;
}
void write(int n)
{if(n>9)write(n/10);putchar(n%10+'0');
}
int n,m,p,d[N],head[N],to[N],ne[N],id,ans;
bool vis[N];
void add(int x,int y)
{to[++id]=y,ne[id]=head[x],head[x]=id;
}
bool find(int u)
{vis[u]=1;for(int i=head[u];i;i=ne[i]){int v=to[i];if(vis[d[v]])continue;if(!d[v]||find(d[v])){d[v]=u;return true;}}return false;
}
int main(int argc,char **argv)
{n=read(),m=read(),p=read();while(p--){int x,y;x=read(),y=read();add(x,y);}for(int i=1;i<=n;i++){memset(vis,0,sizeof vis);if(find(i))ans++;}write(ans);return 0;
}

P3386 【模板】二分图最大匹配相关推荐

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

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

  2. [模板] 二分图最大匹配

    原题链接 #include <iostream> #include <cstring> #include <algorithm>const int N = 510, ...

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

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

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

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

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

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

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

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

  7. NYOJ 题目239 月老的难题 (二分图最大匹配-匈牙利算法模板)

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

  8. 图论--二分图最大匹配(匈牙利算法)--模板

    //二分图最大匹配数量 #include<cstdio> #include<cstring> #include<iostream> #include<queu ...

  9. P3386二分图最大匹配模版

    传送门 声明几个定义: 1.二分图 对于一个图G=(V,E),若能将其点集分为两个互不相交的两个子集X.Y,使得X∩Y=∅,且对于G的边集V,若其所有边的顶点全部一侧属于X,一侧属于Y,则称图G为一个 ...

最新文章

  1. 微信小程序与uniapp中 px与rpx 相互转换
  2. Android用摄像头的那点破事
  3. linux 文件系统_Linux 虚拟文件系统
  4. 为什么要尽量设定一个主键?
  5. 一次性删除数据库中某库的所有存储过程的方法
  6. php获取url文件大小,PHP通过URL获取文件大小
  7. 静态static关键字修饰成员变量
  8. OSChina 周四乱弹 —— 熊孩子毁灭世界
  9. Java中的变量数据类型补充
  10. 【渝粤教育】广东开放大学 生产与运作管理 形成性考核 (36)
  11. 【Django 2021年最新版教程16】pycharm model模型修改之后如何同步更新到mysql数据库
  12. 人工智能顶会顶刊以及SCI,IF,核心,分区
  13. Python报错:ImportError: cannot import name 'downsample'
  14. “已取消到该网页的导航” chm文件无法显示错误 解决方法
  15. NBUT - 1077 骨牌铺方格 【递推】
  16. 低功耗能量回收时钟发生器和触发器的设计
  17. 单片机 stm32 差分升级 增量升级算法源码, 纯c编写跨平因为是程序源码
  18. 六种常见开源协议整理
  19. codeforces div716 C、D
  20. 使用Appuim+Python脚本实现Android应用自动登录

热门文章

  1. android(跳动的心)
  2. 工作学习正确坐姿坐姿提升注意力
  3. 使用og协议分享web页面到WhatsApp
  4. iPad Pro 突然开不了机
  5. mysql 关联更新_MySQL UPDATE多表关联更新
  6. [Java基础]--Java GC工作原理
  7. 【欣赏】logo设计原则 + 一组设计独特的logo欣赏
  8. 前端面试谈:简历通用注意事项
  9. 程序员中前10%,我认识的这些老司机是怎么突破年薪百万
  10. Auto.js视频笔记