题意:

有P门课,N个学生,给出每门课上的人。

然后问你能不能使得每门课有一个课代表

思路:

课和学生是两类,且同类之间没有关系,构成二分图;直接就是一个最大匹配问题;

注意点:

1.是给课进行匹配不是学生

2.比如二分图有A,B两类,A与B允许编号相同,但是如果A中的点到B中的点建边,

这个意义是A对B有关系,B能去匹配A,这一定不是双向边,双向边就额外多了层关系啊,

而且如果有额外匹配空间是利用一个配偶数组(就是存匹配对象的配偶,其实就是A->B->A),然后去询问A还能不能额外在匹配一个;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4.  
  5. const int N=6e4+10;
  6. const int M=4e2+10;
  7.  
  8. struct asd{
  9. int to;
  10. int next;
  11. };
  12. asd q[N];
  13. int head[N],tol;
  14. int cy[M],p,n;
  15. bool vis[M];
  16.  
  17. void init()
  18. {
  19. tol=0;
  20. memset(head,-1,sizeof(head));
  21. }
  22.  
  23. void add(int u,int v)
  24. {
  25. q[tol].to=v;
  26. q[tol].next=head[u];
  27. head[u]=tol++;
  28. }
  29.  
  30. bool Find(int u)
  31. {
  32. for(int i=head[u];i!=-1;i=q[i].next)
  33. {
  34. int v=q[i].to;
  35. if(!vis[v])
  36. {
  37. vis[v]=true;
  38. if(cy[v]==-1||Find(cy[v]))
  39. {
  40. cy[v]=u;
  41. return true;
  42. }
  43. }
  44. }
  45. return false;
  46. }
  47.  
  48. int main()
  49. {
  50. int T;
  51. scanf("%d",&T);
  52. while(T--)
  53. {
  54. scanf("%d%d",&p,&n);
  55. int num,x;
  56. init();
  57. for(int i=0;i<p;i++){
  58. scanf("%d",&num);
  59. while(num--)
  60. {
  61. scanf("%d",&x);
  62. add(i,x);
  63. }
  64. }
  65. int ans=0;
  66. memset(cy,-1,sizeof(cy));
  67. for(int i=0;i<p;i++)
  68. {
  69. memset(vis,0,sizeof(vis));
  70. if(Find(i))
  71. ans++;
  72. }
  73. if(ans!=p)
  74. puts("NO");
  75. else
  76. puts("YES");
  77. }
  78. return 0;
  79. }

HDU1083 【匹配问题】的更多相关文章

  1. HDU1083 :Courses(二分图匹配)

    Cources Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  2. [kuangbin带你飞]专题十 匹配问题 二分匹配部分

    刚回到家 开了二分匹配专题 手握xyl模板 奋力写写写 终于写完了一群模板题 A hdu1045 对这个图进行 行列的重写 给每个位置赋予新的行列 使不能相互打到的位置 拥有不同的行与列 然后左行右列 ...

  3. HDU1083 Courses —— 二分图最大匹配

    题目链接:https://vjudge.net/problem/HDU-1083 Courses Time Limit: 20000/10000 MS (Java/Others)    Memory ...

  4. HDU-1083 Courses 二分图 最大匹配

    题目链接:https://cn.vjudge.net/problem/HDU-1083 题意 有一些学生,有一些课程 给出哪些学生可以学哪些课程,每个学生可以选多课,但只能做一个课程的代表 问所有课能 ...

  5. javascript匹配各种括号书写是否正确

    今天在codewars上做了一道题,如下 看上去就是验证三种括号各种嵌套是否正确书写,本来一头雾水,一种括号很容易判断, 但是三种怎么判断! 本人只是个前端菜鸟,,不会什么高深的正则之类的. 于是,在 ...

  6. scanf类型不匹配造成死循环

        int i = 0; while (flag) { printf("please input a number >>> "); scanf("% ...

  7. 使用注解匹配Spring Aop切点表达式

    Spring中的类基本都会标注解,所以使用注解匹配切点可以满足绝大部分需求 主要使用@within()/@target @annotaton() @args()等... 匹配@Service类中的所有 ...

  8. .net使用正则表达式校验、匹配字符工具类

    开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: /// <summary> /// 字符(串)验证.匹配工具类 /// </summary> public c ...

  9. webpack配置别名alias出现的错误匹配

    @(webpack) webpack是一款功能强大的前端构建工具,不仅仅是针对js,它也可通过各种loader来构建相关的less,html,image等各种资源,将webpack配合流程制定工具gu ...

随机推荐

  1. WPF中的数据绑定Data Binding使用小结

    完整的数据绑定的语法说明可以在这里查看: http://www.nbdtech.com/Free/WpfBinding.pdf MSDN资料: Data Binding: Part 1 http:// ...

  2. EasyDarwin流媒体云平台架构

    EasyDarwin目前正在做的开源流媒体云平台架构:

  3. TypeSafe Config使用

    ================typesafeconfig的使用==================== #1.加入依赖包 config-1.2.1.jar #2.加载配置 ConfigFactor ...

  4. 不懂不能装懂--邮箱后缀“inc”的含义

    之前实习的公司,邮箱域名是XXX@XXX-inc.com 再之前,投递简历了或者关注某个公司的一些信息或者和这些公司的人邮件联系是也发现有这个inc的后缀,一直不明白,今天觉得自己找到答案了,不怕丢人 ...

  5. object-c中的assign,retain,copy,atomic,nonatomic,readonly,readwrite以及strong,weak

    assign:指定setter方法用简单的赋值,这是默认操作.你可以对标量类型(如int)使用这个属性.你可以想象一个float,它不是一个对象,所以它不能retain.copy.assign指定se ...

  6. php memcache知识点总结

    $memcache = new Memcache; $memcache->connect('localhost',11211) or die('Could not connect'); //me ...

  7. js实现菜单二级联动

    代码如下,以便自己以后方便查阅: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> < ...

  8. 从ffmpeg filter里出来的数据直接送给avcodec_encode_audio2编码,写文件有错。

    http://hi.baidu.com/mingyuejingque/item/78e71aff57ae9ec5a835a2e4 感谢mingyuejingque st = avformat_new_ ...

  9. poj 3617 Best Cow Line 解题报告

    题目链接:http://poj.org/problem?id=3617 题目意思:给出一条长度为n的字符串S,目标是要构造一条字典序尽量小,长度为n的字符串T.构造的规则是,如果S的头部的字母 < ...

  10. 限制远程桌面登录IP的方法

    转自:http://www.cnblogs.com/vaexi/articles/2106623.html 限制远程桌面登录IP的方法 第一种方法: 1.打开Windows自带的防火墙2.开放允许例外 ...