hdu 3605 Escape (二分图的多重匹配)
来源:互联网 发布:谷歌seo初级指南2016 编辑:程序博客网 时间:2024/05/21 01:34
hdu 3605 Escape (二分图的多重匹配)
题意:有m个星球(m<=10),现在有n(n<10w),有些人适合住在一部分星球上,每个星球可以容纳a[i](<100000 )个人,问能否安排所有的人?
题解:典型的二分多重匹配;
注意:(1) 开数组的时候,用link[x][y] 记录第x个星球居住的人!一开始数组开反了,一直WA!!
(2) 后来搞个输入优化,忘了ret=ret*10+(c-'0'); 忘了乘10!!晕!
#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <stack>#include <cmath>#include <vector>#include <queue>#include <map>using namespace std;#define LL long long#define N 100005#define M 12#define DEBUG puts("It's here!")#define INF 1<<29#define CLS(x,v) memset(x,v,sizeof(x))#define FOR(i,a,n) for(int i=(a);i<=(n);++i)int n,m;int graph[N][M];bool vis[M];vector<int> link[M];//记录第i个星球上住的人int cap[M];//第i个星球上最多住多少人int DFS(int x){ for(int i=1;i<=m;i++)//m个星球 if(!vis[i]&&graph[x][i])//还没住满 { vis[i]=1; if(link[i].size()<cap[i]) { link[i].push_back(x);return 1; } for(int k=0;k<link[i].size();k++) { if(DFS(link[i][k]))//让别人去住别的星球 { link[i][k]=x;return 1; } } } return 0;}int input(){ int ret=0; char c=getchar(); while(c<'0'||c>'9')c=getchar(); while(c>='0'&&c<='9') { ret=ret*10+c-'0';// c=getchar(); } return ret;}int main(){ while(~scanf("%d%d",&n,&m)) { FOR(i,1,m)link[i].clear(); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { //scanf("%d",&graph[i][j]); graph[i][j]=input(); } FOR(i,1,m)cap[i]=input(); int cnt=0; for(int i=1;i<=n;i++) { CLS(vis,0); if(DFS(i))cnt++; else break; } if(cnt==n)puts("YES"); else puts("NO"); } return 0;}
0 0
- hdu 3605 Escape (二分图多重匹配)
- hdu 3605 Escape【二分图多重匹配】
- HDU 3605 Escape【二分图多重匹配】
- HDU 3605 Escape (二分图的多重匹配)
- hdu 3605 Escape (二分图的多重匹配)
- hdu 3605 Escape(二分图多重匹配问题)
- hdu 3605 Escape (二分图多重匹配)
- HDU 3605 Escape (二分图多重匹配模板)
- HDU 3605 Escape (二分图多重匹配模板)
- hdu 3605 Escape 二分图的多重匹配(匈牙利算法)
- HDOJ 3605 - Escape 二分图多重匹配
- 二分图匹配 ( 多重匹配&&Hungarian)——Escape ( HDU 3605 )
- HDU--3605 Escape (多重匹配)
- HDU 3605 Escape(网络流 + 状压简化 | 二分图多重匹配)
- hdu 3605 Escape(最大流+状态压缩 or 二分图多重匹配)
- hdu 3605 Escape/poj 2584 T-Shirt Gumbo(二分图多重匹配)
- hdu_3605 Escape 二分图的多重匹配 匈牙利算法
- hdu3605—Escape(二分图的多重匹配)
- HDU 4888
- FlatBuffers与protobuf性能比较
- XML概述
- iframe问题(未解决)
- 一个星期的总结
- hdu 3605 Escape (二分图的多重匹配)
- ubuntu 13.10 Rhythmbox不能播放mp3 和中文乱码的问题
- 在.NET平台使用Google Earth COM API示例(02)
- Libevent源码分析-----TAILQ_QUEUE队列
- 概率主题模型资源
- [代码备份]poj1755
- Hu矩轮廓匹配
- C语言基础——预处理指令
- Sublime Text2 按shift键选择不了的问题