二分图多重匹配

改进版的匈牙利,加入了一个cnt数组作为找到增广路的标志
本题有一个重要的优化见注释

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
int init(){int rv=0,fh=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-') fh=-1;c=getchar();}while(c>='0'&&c<='9'){rv=(rv<<1)+(rv<<3)+c-'0';c=getchar();}return fh*rv;
}
const int MAXN=100005;
int n,m,cnt[12],match[12][MAXN],g[MAXN][12],lim[12];
bool f[12];
bool hungarian(int u){for(int i=1;i<=g[u][0];i++){int v=g[u][i];if(!f[v]){f[v]=1;if(cnt[v]<lim[v]){match[v][++cnt[v]]=u;return 1;}for(int j=1;j<=cnt[v];j++){if(hungarian(match[v][j])){match[v][j]=u;return 1;}}}}return 0;
}
int main(){while(~scanf("%d%d",&n,&m)){memset(g,0,sizeof(g));//memset(match,0,sizeof(match));memset(cnt,0,sizeof(cnt));memset(lim,0,sizeof(lim));for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){int t=init();if(t) g[i][++g[i][0]]=j;}}for(int i=1;i<=m;i++) lim[i]=init();int ans=0;for(int i=1;i<=n;i++){memset(f,0,sizeof(f));if(!hungarian(i)) {ans=1;break;}//一旦搜不到增广路就退出}if(!ans) cout<<"YES"<<endl;else cout<<"NO"<<endl;}
}

转载于:https://www.cnblogs.com/Mr-WolframsMgcBox/p/8295353.html

HDU [P3605] Escape相关推荐

  1. HDU - 3605 Escape(二分图多重匹配-网络流最大流+思维建边+状态压缩)

    题目链接:点击查看 题目大意:到世界末日了,现在人们要逃离去其他的星球,现在给出n个人以及m个星球,再给出每个人可以前往的星球,最后给出每个星球的容量,题目问最多能让多少个人逃离 题目分析:这个题读完 ...

  2. HDU - 3533 Escape(预处理+A*)

    题目链接:点击查看 题目大意:题意我感觉描述的很不清楚..是看网上其他大佬的博客总结来的,大意就是我们要从点(0,0)走到点(n,m),然后在一些地方设置了炮塔(炮塔视为墙),可以向一个方向周期性地发 ...

  3. HDU 3605 Escape【最大流】

    题意:有n个人,m个星球,要搬家,一些人有特定喜欢的星球,让尽量多的人到星球. 输入n,m 输入n*m矩阵表示 i 人是否喜欢 j 星球 输入m个数字表示星球对人的容量 直接建图会超时,然后我们发现m ...

  4. 解题报告:【kuangbin带你飞】专题十一 网络流

    目录 A.POJ 3436 ACMComputerFactoryACM\ Computer\ FactoryACM Computer Factory[省选/NOI- ] B.POJ 3281 Dini ...

  5. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  6. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

  7. 杭电OJ分类题目(4)-Graph

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...

  8. jenkins api java封装_Jenkins api java 调用

    android development 1. Supporting different devices 1) Supporting different screen size 主要有几点,首先是布局文 ...

  9. 网络流 最大流 最小割 费用流

    [腾讯文档]网络流初步 网络流初步 文章目录 网络流初步 一.网络流简介 1. 网络 2. 流 3. 再次理解网络流 二.常见题型(三种) 三.相关问题对应算法介绍 1.最大流 (1) FF算法 - ...

最新文章

  1. android菜单(menu)资源
  2. 349. Intersection of Two Arrays 两个数组的交集
  3. 关服了的手游怎么进去_如果手游彻底停服了的话,我的二次元“老婆”们怎么办?...
  4. HTTP菜鸟教程速查手册
  5. linux 如何解压.exe,linux下解压火狐浏览器压缩包 ./filefox 运行可执行程序报错问题...
  6. 三管齐下!TB 级文件的上传性能瞬间被优化 100 倍!
  7. .net知识和学习方法系列(二十三)嵌套类
  8. socket编程之TCP/UDP
  9. adb工具包的安装和使用方法
  10. OTDR光时域反射仪测试参数设置
  11. 中国移动的呼叫转移呼叫等待等设置方法 USSD MMI
  12. 畅购商城:Spring Security Oauth2 JWT(下)
  13. 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一
  14. 《深入理解计算机系统》Lab3 Bomblab
  15. C++ 数据结构(三)列表(3)有序列表
  16. IT企业内部系统运营推广的六种方法
  17. 微信大转盘 java_[Java教程]使用CSS3+jquery.js 实现微信抽奖转盘效果
  18. java around_关于Aop切面中的@Before @Around等操作顺序的说明
  19. 2021年 12.9 英寸 iPad Pro 测评
  20. windows xp安装驱动时提示驱动未通过微软数字签名

热门文章

  1. nginx lua指令
  2. JavaScript循环定时器的设置和取消
  3. GraphQL引入依赖maven仓库配置
  4. Apache Shiro权限控制框架简介
  5. android listview下拉动画效果,Android开发中利用ListView实现一个渐变式的下拉刷新动画...
  6. python字符串功能_python字符串内置功能
  7. Java实现话术词槽匹配_知识图谱与KBQA——槽填充
  8. 显示屏的方向设置问题
  9. C语言变量初始化是必须的吗?不初始化会怎样?
  10. java反射机制详解_Java反射机制详解