题目背景

二分图

题目描述

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

输入输出格式

输入格式:

第一行,n,m,e

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

输出格式:

共一行,二分图最大匹配

输入输出样例

输入样例#1:

1 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相关推荐

  1. AC日记——[SDOI2010]大陆争霸 洛谷 P3690

    [SDOI2010]大陆争霸 思路: dijkstra模板: 代码: #include <bits/stdc++.h> using namespace std; #define maxn ...

  2. AC日记——双栈排序 洛谷 P1155

    双栈排序 思路: 二分图染+模拟: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 1005 #define ...

  3. AC日记——凌乱的yyy 洛谷 P1803

    题目背景 快noip了,yyy很紧张! 题目描述 现在各大oj上有n个比赛,每个比赛的开始.结束的时间点是知道的. yyy认为,参加越多的比赛,noip就能考的越好(假的) 所以,他想知道他最多能参加 ...

  4. AC日记——最大子段和 洛谷 P1115

    题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 输入文件maxsum1.in的第一行是一个正整数N,表示了序列的长度. 第2行包含N个绝对值不大于10000 ...

  5. AC日记——神奇的幻方 洛谷 P2615(大模拟)

    题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,--,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...

  6. 洛谷 P3386 【模板】二分图匹配

    洛谷 P3386 [模板]二分图匹配 题目 题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行 ...

  7. 洛谷P3386:网络流之二分图匹配,最大流算法

    二分图:我的理解是,对图中的点集,可分为两个集合U和V,使得两个集合之间存在通路,且集合内部不存在通路.如上图. 匹配:两两不含公共端点的边集合M 最大匹配:边数最多的匹配 完美匹配:最大匹配的匹配数 ...

  8. 最小生成树 洛谷P3366【模板】最小生成树 洛谷P2820 局域网

    嗯... 理解生成树的概念: 在一幅图中将所有n个点连接起来的n-1条边所形成的树. 最小生成树: 边权之和最小的生成树. 最小瓶颈生成树: 对于带权图,最大权值最小的生成树. 如何操作? 1.Pri ...

  9. 【洛谷P3386】【模板】二分图匹配【网络流】

    题目大意: 题目链接:https://www.luogu.org/problemnew/show/P3386 求一个二分图的最大匹配. 思路: 二分图匹配的模板.可以用匈牙利做. 听说这道题卡Dini ...

  10. (二分图)洛谷P2071座位安排

    洛谷P2071座位安排 思路: 网络流难在建图上面. 这题(应该也可以,我没尝试过)用二分图匹配去跑.可以拆点,将一排的座位拆成两个点,一个iii,一个i+ni+ni+n,然后匈牙利算法跑. 也可以用 ...

最新文章

  1. 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤
  2. 非常有用的css使用总结
  3. 在命令提示符下输入的命令
  4. 零基础带你学习MySQL—Insert语句以及注意事项(七)
  5. Linux的errno
  6. php无参rce,php中无参函数的RCE
  7. Kubernetes (1.6) 中的存储类及其动态供给
  8. Atitit it计算机应用体系图  大数据 爬虫 非结构数据 nosql redis mongodb 分布式存储 es搜索 可视化 多媒体与office 19.1. 14.3 计
  9. [译]利用贝叶斯推理做硬件故障率的准实时预测
  10. QT表格QTableWidget在win10下纵横表头无分隔线的问题
  11. 信而泰 X-Snapper测试系统,助力家庭路由器IPv6支持度测试
  12. uniapp打包的app上架应用商店隐私政策:您的应用在用户同意隐私政策前申请获取用户个人信息
  13. Windows 防火墙日志相关
  14. 2020中式烹调师(初级)证考试及中式烹调师(初级)实操考试视频
  15. java nio 学习笔记2
  16. powershell激活conda失败;无法加载文件 C:\Users\user\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本
  17. ksoftirqd内核线程-处理软中断
  18. jquery 处理页面的事件详解
  19. edge 此项内容已下载并添加到 Chrome 中。_比肩迅雷的下载神器大盘点
  20. Python Turtle绘制炫酷漂亮图案(turtledemo模块实例)

热门文章

  1. atitit 业务 触发器原理. 与事件原理 docx
  2. Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据
  3. paip.python优缺点attilax总结
  4. paip.百度空间 JAVA程序发文总结
  5. Toml :设置策略配置文件
  6. 暴增14倍!这家港股最大基金公司,1年净利20亿,竟是因为这个!
  7. (转liigo)Rust 1.0发布一周年,发展回顾与总结
  8. Julia: Array元素过滤、元素替代、元素删除等酸爽操作
  9. 资深架构师自述:程序员的黄金奋斗时期是前5年
  10. 服务器迁移中心 SMC 最佳实践及新特性介绍