题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1083

标准的匹配问题,直接上代码,有详细的注释

题目地址:

#include <iostream>
using namespace std;int nx, ny; //X和Y 集合中顶点的个数
int g[305][305]; //邻接矩阵,g[i][j]为1 表示Xi 和Yj 有边相连int cx[305], cy[305];
int mk[305] ;int path( int u )
{for( int v=1 ; v<=ny ; v++ ) //考虑所有Yi 顶点v{if( g[u][v] && !mk[v] ) //v 与u 邻接,且没有访问过{mk[v]=1; //访问v//如果v 没有匹配,或者v 已经匹配了,但从cy[v]出发可以找到一条增广路//注意如果前一个条件成立,则不会递归调用if( cy[v]==-1||path( cy[v] ) ){cx[u]=v; //把v 匹配给ucy[v]=u; //把u 匹配给vreturn 1; //找到可增广路}}}return 0 ; //如果不存在从u 出发的增广路
}int MaxMatch( ) //求二部图最大匹配的匈牙利算法
{int res=0; //所求得的最大匹配memset(cx,0xff,sizeof(cx)); //从0 匹配开始增广,将cx 和cy 各元素初始化为-1memset( cy, 0xff, sizeof(cy) );for( int i=1; i<=nx; i++ ){if( cx[i]==-1 ) //从每个未盖点出发进行寻找增广路{memset( mk, 0, sizeof(mk) ) ;res+=path(i); //每找到一条增广路,可使得匹配数加1}}return res;
}int main()
{int i,j,T,p,n,max;cin>>T;while(T--){memset(g,0,sizeof(g));cin>>nx>>ny;for(i=1;i<=nx;i++){cin>>p;for(j=1;j<=p;j++){cin>>n;g[i][n]=1;}}max=MaxMatch();if(max>=nx)cout<<"YES"<<endl;elsecout<<"NO"<<endl;}return 520;
}

转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/04/06/3002668.html

HDU 1083 Courses 匹配相关推荐

  1. Courses hdu 1083(匹配)

    http://acm.hdu.edu.cn/showproblem.php?pid=1083 题意:一共有N个学生跟P门课程,一个学生可以任意选一门或多门课,问是否达成: 1.每个学生选的都是不同的课 ...

  2. hdu 1083 Courses

    水水更健康 #include<cstdio> #include<cstring> #include<algorithm> #include<vector> ...

  3. 【HDU - 1083 】Courses (二分图)

    题干: Consider a group of N students and P courses. Each student visits zero, one or more than one cou ...

  4. HDU 1083 Coures(二分图匹配)

    解题思路: 裸的匈牙利算法,看最大匹配是否等于P: #include <iostream> #include <cstring> #include <cstdlib> ...

  5. hdu 2063+hdu 1083(最大匹配数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 二分匹配水题,求最大匹配数(即求边数最多的匹配),匈牙利算法实现.. View Code 1 # ...

  6. hdu 1281(二分图匹配+增广路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 解题思路: 把棋盘的行x看成二分图左边的点,列y看成二分图右边的点,那么就把可以放车的位置看成是 ...

  7. hdu 1533 KM匹配

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1533 关于KM的简单讲解&&模板 推荐(写的很详细也很容易理解):http://blog. ...

  8. hdu 5093 二分匹配

    /* 题意:给你一些冰岛.公共海域和浮冰,冰岛可以隔开两个公共海域,浮冰无影响 求选尽可能多的选一些公共海域点每行每列仅能选一个. 限制条件:冰山可以隔开这个限制条件.即*#*可以选两个 预处理: * ...

  9. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

最新文章

  1. python自带的库有哪些_python常用的内置库
  2. 浅析网站流量出现异常情况应怎样解决?
  3. 【oracle】TNS-03505: 无法解析名称
  4. 笔记-项目整体管理-复习要点
  5. 【数据结构与算法】二叉树遍历
  6. 服务器如何区分多个客户端的信息,如何从服务器向客户端发送已连接客户端的列表,以区分常规消息?...
  7. java 多线程同步问题_Java多线程同步问题:一个小Demo完全搞懂
  8. 编写mysql的工具_自己编写的数据库工具类
  9. 9206-1121-对象数组
  10. java 小球抛物线_关于【愤怒的小鸟】其中的算法(自由落体,抛物线,碰撞,反弹)...
  11. 12. 星际争霸之php设计模式--模板模式
  12. 开源搜索服务 Apache Solr 出现多个高危漏洞
  13. linux7解绑bond命令,linux多网卡的7种bond模式原理配置
  14. 实时查看Linux IO复用情况
  15. TensorFlow实现去噪自编码器及使用—Masking Noise Auto Encoder
  16. PowerPoint 中缺少think-cell 加载项怎么解决?
  17. 华为路由与交换 eSight 基本功能学习笔记
  18. xmapp mysql启动失败 Attempting to start MySQL service...
  19. Android自动化测试之Monkey
  20. 狗是人类最忠诚的伙伴,当狗遇到不同的人会有不同的反应,下面要求编写一个案例模拟狗遇到不同的人时的反应。

热门文章

  1. Pandas 文本数据方法 capitalize( ) lower( ) upper( )
  2. openlayers属性数据mysql_OpenLayers学习笔记8——使用servlet从mysql获取数据并标注
  3. 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II
  4. 使用vSAN RVC进一步了解vSAN环境
  5. WSUS补丁服务器部署详细 利用WSUS部署更新程序
  6. 一项一项教你测等保2.0——Windows入侵防范
  7. 分库分表学习总结(2)——数据库中间件MyCat学习总结之MyCat-Web原理介绍
  8. Spring学习总结(16)——Spring AOP实现执行数据库操作前根据业务来动态切换数据源
  9. php文件上传非法,ThinkPHP 3.2.3 版本上传文件出现“非法上传文件!”错误解决办法...
  10. python的核心理念_python核心基础 - 草稿