AC日记——【模板】二分图匹配 洛谷 P3386
题目背景
二分图
题目描述
给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数
输入输出格式
输入格式:
第一行,n,m,e
第二至e+1行,每行两个正整数u,v,表示u,v有一条连边
输出格式:
共一行,二分图最大匹配
输入输出样例
1 1 1 1 1
1
说明
n,m<=1000,1<=u<=n,1<=v<=m
因为数据有坑,可能会遇到v>m的情况。请把v>m的数据自觉过滤掉。
算法:二分图匹配
思路:
二分图模板;
来,上代码:
#include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm>#define maxn 1005 #define INF 0x7fffffffusing namespace std;struct EdgeType {int v,f,e; }; struct EdgeType edge[maxn*maxn*2];int cnt,deep[maxn<<1],ans,e; int n,m,head[maxn<<1],s=0,t=(maxn<<1)-1;char Cget;inline void in(int &now) {now=0,Cget=getchar();while(Cget>'9'||Cget<'0') Cget=getchar();while(Cget>='0'&&Cget<='9'){now=now*10+Cget-'0';Cget=getchar();} }bool bfs() {for(int i=s;i<=t;i++) deep[i]=-1;queue<int>que;deep[s]=0,que.push(s);while(!que.empty()){int now=que.front();que.pop();for(int i=head[now];i;i=edge[i].e){if(edge[i].f>0&&deep[edge[i].v]<0){deep[edge[i].v]=deep[now]+1;if(edge[i].v==t) return true;que.push(edge[i].v);}}}return false; }int flowing(int now,int flow) {if(now==t||flow<=0) return flow;int oldflow=0;for(int i=head[now];i;i=edge[i].e){if(edge[i].f<=0||deep[edge[i].v]!=deep[now]+1) continue;int pos=flowing(edge[i].v,min(edge[i].f,flow));if(pos>0){flow-=pos;oldflow+=pos;edge[i].f-=pos;edge[i^1].f+=pos;if(flow==0) return oldflow;}}if(oldflow==0) deep[now]=-1;return oldflow; }int main() {in(n),in(m),in(e);for(int i=1;i<=n;i++){edge[++cnt].v=i,edge[cnt].f=1,edge[cnt].e=head[s],head[s]=cnt;edge[++cnt].v=s,edge[cnt].f=0,edge[cnt].e=head[i],head[i]=cnt;}for(int i=1+n;i<=m+n;i++){edge[++cnt].v=t,edge[cnt].f=1,edge[cnt].e=head[i],head[i]=cnt;edge[++cnt].v=i,edge[cnt].f=0,edge[cnt].e=head[t],head[t]=cnt;}int u,v;while(e--){in(u),in(v);v+=n;edge[++cnt].v=v,edge[cnt].f=1,edge[cnt].e=head[u],head[u]=cnt;edge[++cnt].v=u,edge[cnt].f=0,edge[cnt].e=head[v],head[v]=cnt;}while(bfs()) ans+=flowing(s,INF);cout<<ans;return 0; }
转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6648368.html
AC日记——【模板】二分图匹配 洛谷 P3386相关推荐
- AC日记——[SDOI2010]大陆争霸 洛谷 P3690
[SDOI2010]大陆争霸 思路: dijkstra模板: 代码: #include <bits/stdc++.h> using namespace std; #define maxn ...
- AC日记——双栈排序 洛谷 P1155
双栈排序 思路: 二分图染+模拟: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 1005 #define ...
- AC日记——凌乱的yyy 洛谷 P1803
题目背景 快noip了,yyy很紧张! 题目描述 现在各大oj上有n个比赛,每个比赛的开始.结束的时间点是知道的. yyy认为,参加越多的比赛,noip就能考的越好(假的) 所以,他想知道他最多能参加 ...
- AC日记——最大子段和 洛谷 P1115
题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 输入文件maxsum1.in的第一行是一个正整数N,表示了序列的长度. 第2行包含N个绝对值不大于10000 ...
- AC日记——神奇的幻方 洛谷 P2615(大模拟)
题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,--,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...
- 洛谷 P3386 【模板】二分图匹配
洛谷 P3386 [模板]二分图匹配 题目 题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行 ...
- 洛谷P3386:网络流之二分图匹配,最大流算法
二分图:我的理解是,对图中的点集,可分为两个集合U和V,使得两个集合之间存在通路,且集合内部不存在通路.如上图. 匹配:两两不含公共端点的边集合M 最大匹配:边数最多的匹配 完美匹配:最大匹配的匹配数 ...
- 最小生成树 洛谷P3366【模板】最小生成树 洛谷P2820 局域网
嗯... 理解生成树的概念: 在一幅图中将所有n个点连接起来的n-1条边所形成的树. 最小生成树: 边权之和最小的生成树. 最小瓶颈生成树: 对于带权图,最大权值最小的生成树. 如何操作? 1.Pri ...
- 【洛谷P3386】【模板】二分图匹配【网络流】
题目大意: 题目链接:https://www.luogu.org/problemnew/show/P3386 求一个二分图的最大匹配. 思路: 二分图匹配的模板.可以用匈牙利做. 听说这道题卡Dini ...
- (二分图)洛谷P2071座位安排
洛谷P2071座位安排 思路: 网络流难在建图上面. 这题(应该也可以,我没尝试过)用二分图匹配去跑.可以拆点,将一排的座位拆成两个点,一个iii,一个i+ni+ni+n,然后匈牙利算法跑. 也可以用 ...
最新文章
- 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤
- 非常有用的css使用总结
- 在命令提示符下输入的命令
- 零基础带你学习MySQL—Insert语句以及注意事项(七)
- Linux的errno
- php无参rce,php中无参函数的RCE
- Kubernetes (1.6) 中的存储类及其动态供给
- Atitit it计算机应用体系图 大数据 爬虫 非结构数据 nosql redis mongodb 分布式存储 es搜索 可视化 多媒体与office 19.1. 14.3 计
- [译]利用贝叶斯推理做硬件故障率的准实时预测
- QT表格QTableWidget在win10下纵横表头无分隔线的问题
- 信而泰 X-Snapper测试系统,助力家庭路由器IPv6支持度测试
- uniapp打包的app上架应用商店隐私政策:您的应用在用户同意隐私政策前申请获取用户个人信息
- Windows 防火墙日志相关
- 2020中式烹调师(初级)证考试及中式烹调师(初级)实操考试视频
- java nio 学习笔记2
- powershell激活conda失败;无法加载文件 C:\Users\user\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本
- ksoftirqd内核线程-处理软中断
- jquery 处理页面的事件详解
- edge 此项内容已下载并添加到 Chrome 中。_比肩迅雷的下载神器大盘点
- Python Turtle绘制炫酷漂亮图案(turtledemo模块实例)
热门文章
- atitit 业务 触发器原理. 与事件原理 docx
- Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据
- paip.python优缺点attilax总结
- paip.百度空间 JAVA程序发文总结
- Toml :设置策略配置文件
- 暴增14倍!这家港股最大基金公司,1年净利20亿,竟是因为这个!
- (转liigo)Rust 1.0发布一周年,发展回顾与总结
- Julia: Array元素过滤、元素替代、元素删除等酸爽操作
- 资深架构师自述:程序员的黄金奋斗时期是前5年
- 服务器迁移中心 SMC 最佳实践及新特性介绍