hdu 3605 二分图多重匹配
来源:互联网 发布:unity3d卡牌游戏源码 编辑:程序博客网 时间:2024/05/16 10:30
题目大意: N(N<100,000)个人要去M(M<10)个星球,每个人只可以去一些星球,一个星球最多容纳Ki个人,输出是否所有人都可以选择自己的星球。
#include<bits/stdc++.h>using namespace std;int map1[100005][15],top,book[15],f[15][100005],cnt[15],w[15];struct node{ int u,next;}e[100010*3];/*void add(int u,int v){ e[top].u=v; e[top].next=head[u]; head[u]=top++;}*/int n,m;int dfs(int x){ for(int i=0;i<m;i++) { //int u=e[i].u; if(!book[i]&&map1[x][i]) { book[i]=1; if(cnt[i]<w[i]) { f[i][cnt[i]++]=x; return 1; } for(int j=0;j<cnt[i];j++) { if(dfs(f[i][j])) { f[i][j]=x; return 1; } } } } return 0;}int main(){ while(~scanf("%d%d",&n,&m)) { memset(map1,0,sizeof(map1)); memset(f,0,sizeof(f)); memset(cnt,0,sizeof(cnt)); //top=0; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { int a; scanf("%d",&a); if(a==1) { map1[i][j]=1; } } } for(int i=0;i<m;i++) { scanf("%d",&w[i]); } int flag=1; for(int i=0;i<n;i++) { memset(book,0,sizeof(book)); if(!dfs(i)) { flag=0; break; } } if(flag) { printf("YES\n"); } else printf("NO\n"); }}
阅读全文
0 0
- hdu 3605 二分图多重匹配
- hdu 3605 二分图多重匹配
- hdu 3605 Escape (二分图多重匹配)
- hdu 3605 Escape【二分图多重匹配】
- HDU 3605 Escape【二分图多重匹配】
- hdu 3605 二分图多重匹配
- hdu 3605 Escape(二分图多重匹配问题)
- HDU 3605 Escape (二分图的多重匹配)
- hdu 3605 (二分图多重匹配或最大流)
- hdu 3605 Escape (二分图的多重匹配)
- hdu 3605 Escape (二分图多重匹配)
- HDU 3605 Escape (二分图多重匹配模板)
- HDU 3605 Escape (二分图多重匹配模板)
- 二分图多重匹配(HDU 2255)
- hdu 3065 二分图多重匹配
- HDU 1669 二分+多重匹配
- hdu 1669(二分图多重匹配+二分枚举)
- 二分图多重匹配
- 关于libfreenect2遇到的-fPIC问题
- 深入理解java多态性
- wps for linux显示系统缺失字体解决办法
- okhttp封装+拦截器+异常捕获类
- Android数据存储之Sqlite的介绍及使用
- hdu 3605 二分图多重匹配
- shader实例(五)GrabPass捕捉屏幕纹理
- okhttp拦截器的实现
- Hadoop学习笔记(六)实战word count
- OKHTTP3的使用与封装
- zookeeper安装
- 如何从硬盘直接引导 Linux ISO映像
- 具备C语言的能力下,快速学会使用AWK为了做些什么
- servlet 读写文件的坑