二分图的最大匹配(匈牙利算法)HDU1083
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 const int N=500; 6 bool flg,visit[N]; 7 bool mat[N][N]; 8 int match[N]; 9 int ans,p,n,T; 10 11 bool dfs(int v) {//寻找增广路径 12 for(int i=1; i<=n; i++) { 13 if(mat[v][i] && !visit[i]) { 14 15 visit[i]=true; 16 if(match[i]==-1||dfs(match[i])) { 17 match[i]=v; 18 return true; 19 20 } 21 22 23 } 24 } 25 return false; 26 } 27 28 int main() { 29 freopen("C:\\CODE\\in.txt", "r", stdin); 30 //freopen("C:\\CODE\\out.txt","w",stdout); 31 scanf("%d",&T); 32 while(T--) { 33 scanf("%d%d",&p,&n); 34 for(int i=1; i<=p; i++) { 35 for(int j=1; j<=n; j++) { 36 mat[i][j]=false; 37 } 38 } 39 for(int i=1; i<=n; i++) { 40 match[i]=-1; 41 } 42 flg=true; 43 for(int i=1; i<=p; i++) { 44 int t; 45 scanf("%d",&t); 46 if(t==0) { 47 flg=false; 48 } 49 while(t--) { 50 int tmp; 51 scanf("%d",&tmp); 52 mat[i][tmp]=true; 53 } 54 } 55 ans=0; 56 if(flg) { 57 for(int i=1; i<=p; i++) { 58 memset(visit,false,sizeof(visit)); 59 if(dfs(i)) { 60 ans++; 61 } 62 } 63 if(ans==p) 64 puts("YES"); 65 else 66 puts("NO"); 67 } else { 68 puts("NO"); 69 } 70 71 72 } 73 74 fclose(stdin); 75 return 0; 76 }
转载于:https://www.cnblogs.com/livelihao/p/5179185.html
二分图的最大匹配(匈牙利算法)HDU1083相关推荐
- 二分图的最大匹配—匈牙利算法
[基本概念]: 二分图: 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分 ...
- 二分图的最大匹配 匈牙利算法
基本概念 1.二分图: 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别 ...
- AcWing861 二分图的最大匹配 匈牙利算法
就是说是怎么才能让尽可能多的人找到对象法(( 给定一个二分图,其中左半部包含 n1 个点(编号 1∼n1),右半部包含 n2 个点(编号 1∼n2),二分图共包含 m 条边. 数据保证任意一条边的两个 ...
- 二分图最大匹配 - 匈牙利算法
问题描述: X集合(编号1~m),Y集合(编号m+1~n).n,m<100. 给出若干组合(x, y)(相当于映射x->y),问最都能同时有几个组合(分配). 分析: 题目可能简化描述得不 ...
- 二分图最大匹配—匈牙利算法
二分图:又叫二部图,图G中顶点集V可以分成互不相交的子集(X,Y),并且图中的每一条边所关联的点分别属于两个不同的顶点集,则图G叫二分图.(不含奇环) 二分图的匹配:给定一个二分图G的子图M,M的边集 ...
- 二分图最大匹配-匈牙利算法
今天介绍 匈牙利算法 : 匈牙利算法,是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,由匈牙利数学家Edmonds于1965年提出,因而得名. 先介绍一下 ...
- 二分图的匹配——匈牙利算法
什么是匹配 匹配:在图论中,一个「匹配」是一个边的集合,其中任意两条边都没有公共顶点. 最大匹配:一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配. 二分图的匹配:给定一个二分图G,在G ...
- 数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配
数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配 引入小题:最短路径 最大流问题(maximum flow problem) ...
- HDU 2063 过山车 (二分图匹配之匈牙利算法)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- 二分图最大匹配——匈牙利算法
二分图最大匹配 (一).二分图的介绍 1.定义 2.充要条件 (二).二分图的匹配 1.二分图的最大匹配 2.增广路径 3.匈牙利算法 (1).复杂度 (2).算法思路 (3).代码实现 (一).二分 ...
最新文章
- C 实现strcpy函数
- web前端入门学习(纯干货)
- android自定义金额输入键盘_Android 自定义控件 - 仿支付宝数字键盘
- windows安装Linux卡logo,Dell xps 15 windows ubuntu16.04 UEFI 双系统安装 卡在logo界面 卡***问题解决...
- C语言课后习题(20)
- 在DataWorks中实现指定UDF只能被指定账户访问
- 如何用SQL为每一行均产生一个随机数
- 开课吧Java课堂:Transient和volatile修饰符如何运用
- 就算神游 之五:东京迪斯尼乐园 1
- pdffactory字体打印不对_【原创】pdfFactory Pro有关转换PDG图像质量下降解决途径
- 路过图床插件,支持一键上传返回各类链接
- 在JS中如何获取时间以及转换时间
- Notepad++编辑过的行颜色设置 LocationNavigate.ini设置 高亮 黄色 绿色 修改的行变为黄色 修改的行高亮显示
- c语言设计简单计算器,c语言设计简单计算器实现加减乘除运算
- 把扫描文件转变为word文档的最实用的四款OCR识别软件
- 我的世界服务器地皮系统,我的世界服务器怎么创建地皮世界
- 如何除去暴风影音的左上边广告和下角动态广告
- 两相四线步进电机的驱动方法/驱动芯片用法
- 为什么我们的计算机毕业设计要早做准备?
- 联想yoga710风扇声音过大解决方法
热门文章
- Centos7 下Redis3安装
- 新建Web网站与新建Web应用程序的区别
- 读书笔记---编译程序中的三板斧
- 细节决定成败:一个公共类库
- java sharepoint 2010,安装SharePoint2010出现“Could not find stored procedure ‘sp_dboption’.”的解决方法...
- matlab下删除文件或文件夹
- linux下eclipse cdt引用函数库设置问题
- 小憩,味一二 ——08年3月编程手札
- 复旦计算机考研19年录取线,2019年复旦大学考研复试分数线已公布
- c++ 暂停功能_10月10日丨注意:东部华侨城茶溪谷暂停开放!深圳9月街道环卫榜出炉!前五街道盐田占其三!…今日盐田大小事...