P3386 【模板】二分图最大匹配
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 【模板】二分图最大匹配相关推荐
- 模板--二分图最大匹配
P3386 [模板]二分图最大匹配 匈牙利算法思想:遍历左部点,对于每个点判断其是否为一条增广路的端点. 核心代码段: 变量解释:a[ i ][ j ]代表左部点与右部点是否有连线,vis为判断是否访 ...
- [模板] 二分图最大匹配
原题链接 #include <iostream> #include <cstring> #include <algorithm>const int N = 510, ...
- P3386 【模板】二分图最大匹配(匈牙利算法模板)
题目链接:点击这里 题目大意: 给定一个二分图,其左部点的个数为 nnn ,右部点的个数为 mmm ,边数为 eee ,求其最大匹配的边数. 题目分析: 本题使用的匈牙利算法完成的二分图最大匹配 具体 ...
- 【洛谷】P3386 【模板】二分图最大匹配
题目地址: https://www.luogu.com.cn/problem/P3386 题目描述: 给定一个二分图,其左部点的个数为nnn,右部点的个数为mmm,边数为eee,求其最大匹配的边数.左 ...
- P3386 【模板】二分图最大匹配 题解
博客园同步 原题链接 简要题意: 给定两个点集与一些边(保证每条边的顶点属于不同点集),求二分图最大匹配. 解释下:二分图最大匹配 就是 最大的边集使得每两条边都不相交,不共点 的边的个数. 那么你会 ...
- 【模板】匈牙利算法 二分图最大匹配题模板
[任务] 给定一个二分图,用匈牙利算法求这个二分图的最大匹配数. [说明] 求最大匹配,那么我们希望每一个在左边的点都尽量找到右边的一个点和它匹配. 我们一次枚举左边的点x的所有出边指向的点y, 若y ...
- NYOJ 题目239 月老的难题 (二分图最大匹配-匈牙利算法模板)
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- 图论--二分图最大匹配(匈牙利算法)--模板
//二分图最大匹配数量 #include<cstdio> #include<cstring> #include<iostream> #include<queu ...
- P3386二分图最大匹配模版
传送门 声明几个定义: 1.二分图 对于一个图G=(V,E),若能将其点集分为两个互不相交的两个子集X.Y,使得X∩Y=∅,且对于G的边集V,若其所有边的顶点全部一侧属于X,一侧属于Y,则称图G为一个 ...
最新文章
- 微信小程序与uniapp中 px与rpx 相互转换
- Android用摄像头的那点破事
- linux 文件系统_Linux 虚拟文件系统
- 为什么要尽量设定一个主键?
- 一次性删除数据库中某库的所有存储过程的方法
- php获取url文件大小,PHP通过URL获取文件大小
- 静态static关键字修饰成员变量
- OSChina 周四乱弹 —— 熊孩子毁灭世界
- Java中的变量数据类型补充
- 【渝粤教育】广东开放大学 生产与运作管理 形成性考核 (36)
- 【Django 2021年最新版教程16】pycharm model模型修改之后如何同步更新到mysql数据库
- 人工智能顶会顶刊以及SCI,IF,核心,分区
- Python报错:ImportError: cannot import name 'downsample'
- “已取消到该网页的导航” chm文件无法显示错误 解决方法
- NBUT - 1077 骨牌铺方格 【递推】
- 低功耗能量回收时钟发生器和触发器的设计
- 单片机 stm32 差分升级 增量升级算法源码, 纯c编写跨平因为是程序源码
- 六种常见开源协议整理
- codeforces div716 C、D
- 使用Appuim+Python脚本实现Android应用自动登录