HDU [P3605] Escape
二分图多重匹配
改进版的匈牙利,加入了一个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相关推荐
- HDU - 3605 Escape(二分图多重匹配-网络流最大流+思维建边+状态压缩)
题目链接:点击查看 题目大意:到世界末日了,现在人们要逃离去其他的星球,现在给出n个人以及m个星球,再给出每个人可以前往的星球,最后给出每个星球的容量,题目问最多能让多少个人逃离 题目分析:这个题读完 ...
- HDU - 3533 Escape(预处理+A*)
题目链接:点击查看 题目大意:题意我感觉描述的很不清楚..是看网上其他大佬的博客总结来的,大意就是我们要从点(0,0)走到点(n,m),然后在一些地方设置了炮塔(炮塔视为墙),可以向一个方向周期性地发 ...
- HDU 3605 Escape【最大流】
题意:有n个人,m个星球,要搬家,一些人有特定喜欢的星球,让尽量多的人到星球. 输入n,m 输入n*m矩阵表示 i 人是否喜欢 j 星球 输入m个数字表示星球对人的容量 直接建图会超时,然后我们发现m ...
- 解题报告:【kuangbin带你飞】专题十一 网络流
目录 A.POJ 3436 ACMComputerFactoryACM\ Computer\ FactoryACM Computer Factory[省选/NOI- ] B.POJ 3281 Dini ...
- kuangbin带你飞专题合集
题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...
- 算法学习经典例题整理
陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...
- 杭电OJ分类题目(4)-Graph
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...
- jenkins api java封装_Jenkins api java 调用
android development 1. Supporting different devices 1) Supporting different screen size 主要有几点,首先是布局文 ...
- 网络流 最大流 最小割 费用流
[腾讯文档]网络流初步 网络流初步 文章目录 网络流初步 一.网络流简介 1. 网络 2. 流 3. 再次理解网络流 二.常见题型(三种) 三.相关问题对应算法介绍 1.最大流 (1) FF算法 - ...
最新文章
- android菜单(menu)资源
- 349. Intersection of Two Arrays 两个数组的交集
- 关服了的手游怎么进去_如果手游彻底停服了的话,我的二次元“老婆”们怎么办?...
- HTTP菜鸟教程速查手册
- linux 如何解压.exe,linux下解压火狐浏览器压缩包 ./filefox 运行可执行程序报错问题...
- 三管齐下!TB 级文件的上传性能瞬间被优化 100 倍!
- .net知识和学习方法系列(二十三)嵌套类
- socket编程之TCP/UDP
- adb工具包的安装和使用方法
- OTDR光时域反射仪测试参数设置
- 中国移动的呼叫转移呼叫等待等设置方法 USSD MMI
- 畅购商城:Spring Security Oauth2 JWT(下)
- 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一
- 《深入理解计算机系统》Lab3 Bomblab
- C++ 数据结构(三)列表(3)有序列表
- IT企业内部系统运营推广的六种方法
- 微信大转盘 java_[Java教程]使用CSS3+jquery.js 实现微信抽奖转盘效果
- java around_关于Aop切面中的@Before @Around等操作顺序的说明
- 2021年 12.9 英寸 iPad Pro 测评
- windows xp安装驱动时提示驱动未通过微软数字签名