hdu3605 二分图多重匹配(hungary算法)
来源:互联网 发布:最全双色球缩水软件 编辑:程序博客网 时间:2024/06/06 14:09
有n个人要到m个星球上,每个人只能去某些特定的星球,每个星球有最大容纳量,问能不能让每个人都到星球上。
#include<bits/stdc++.h>using namespace std;#define mod 1000000007#define PI acos(-1.0)#define INF 0x3f3f3f3ftypedef long long LL;typedef unsigned long long ULL;const int MAXN = 100010;const int MAXM = 15;int uN,vN;int g[MAXN][MAXM];int linker[MAXM][MAXN];bool used[MAXM];int num[MAXM];//右边最大的匹配数bool dfs(int u){for(int v = 0; v < vN;v++)if(g[u][v] && !used[v]){used[v] = true; if(linker[v][0] < num[v]){linker[v][++linker[v][0]] = u;return true;}for(int i = 1;i <= num[0];i++)if(dfs(linker[v][i])){linker[v][i] = u;return true;}}return false;}int hungary(){int res = 0;for(int i = 0;i < vN;i++) linker[i][0] = 0;for(int u = 0; u < uN; u++){memset(used,false,sizeof(used)); if(!dfs(u))return 0;}return 1;}int main(){ while(~scanf("%d%d",&uN,&vN)){ memset(linker,0,sizeof(linker)); for(int i=0;i<uN;i++){ for(int j=0;j<vN;j++){ scanf("%d",&g[i][j]); } } for(int i=0;i<vN;i++){ scanf("%d",&num[i]); } if(hungary())printf("YES\n"); else printf("NO\n"); } return 0;}
0 0
- hdu3605 二分图多重匹配(hungary算法)
- hdu3605-二分图多重匹配
- hdu3605——Escape(二分图多重匹配)
- hdu3605—Escape(二分图的多重匹配)
- 二分图匹配Hungary算法
- HDU3605 Escape —— 二分图多重匹配
- HDU3605 Escape (二分图多重匹配 邻接矩阵or链式向前星)
- Hall定理(二分图匹配问题,Hungary算法基础)
- Selecting Courses(二分图匹配 Hungary算法)
- 二分图最大匹配Hungary算法详解
- 【二分图匹配】 hdu3605 Escape
- hdu3605 Escape (多重匹配)
- HDU3605 Escape 多重匹配
- 二分图最大匹配算法-匈牙利算法(Hungary)模板
- 二分图的最大匹配————匈牙利算法(hungary)基础详解。
- poj 1719最大二分匹配hungary算法
- POJ 2239 二分图匹配/Hungary
- HDU 5727 Necklace (二分图匹配hungary)
- 从Java视角理解系统结构(一)CPU上下文切换
- 如何高效的使用postman
- Spring入门(4),装配Bean,基于xml
- 利用JQuery实现左侧菜单栏可折叠功能
- 树莓派3 opencv调用摄像头(C++和Python)
- hdu3605 二分图多重匹配(hungary算法)
- ABI(Application Binary Interface)
- LeetCode #415: Add Strings
- 最新稳定版本:
- 深度学习框架Keras使用心得
- unity 生成assetbundle文件
- 有序广播和无序广播的区别
- poj3292(筛选法)
- 自定义控件相关概念