题意:每个人有喜欢的猫和不喜欢的狗。留下他喜欢的猫他就高心,否则不高心。问最后最多有几个人高心。

思路:二分图求最大匹配

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #include<iostream>
  5. #include<cstdlib>
  6. #include<string>
  7. #include<cmath>
  8. #include<vector>
  9. #define clc(a,b) memset(a,b,sizeof(a))
  10. using namespace std;
  11. const double eps=1e-;
  12. const double pi=acos(-);
  13. const int maxn=;
  14. int linker[maxn];
  15. bool used[maxn];
  16. int n,m,p;
  17. char cat[maxn][];
  18. char dog[maxn][];
  19. vector<int>vec[maxn];
  20. int uN;
  21.  
  22. bool dfs(int u)
  23. {
  24. for(int i=;i<vec[u].size();i++)
  25. {
  26. if(!used[vec[u][i]])
  27. {
  28. used[vec[u][i]]=true;
  29. if(linker[vec[u][i]]==-||dfs(linker[vec[u][i]]))
  30. {
  31. linker[vec[u][i]]=u;
  32. return true;
  33. }
  34. }
  35. }
  36. return false;
  37. }
  38.  
  39. int hungary(int n)
  40. {
  41. //int u;
  42. int res=;
  43. clc(linker,-);
  44. for(int u=;u<n;u++)
  45. {
  46. clc(used,);
  47. if(dfs(u))
  48. res++;
  49. }
  50. return res;
  51. }
  52.  
  53. int main()
  54. {
  55. while(~scanf("%d%d%d",&n,&m,&p))
  56. {
  57. clc(vec,);
  58. for(int i=;i<p;i++)
  59. {
  60. scanf("%s%s",cat[i],dog[i]);
  61. }
  62. for(int i=;i<p;i++)
  63. {
  64. for(int j=i+;j<p;j++)
  65. {
  66. if(!strcmp(cat[i],dog[j])||!strcmp(dog[i],cat[j]))
  67. {
  68. vec[i].push_back(j);
  69. vec[j].push_back(i);
  70. }
  71. }
  72. }
  73. uN=hungary(p)/;
  74. //cout<<uN<<endl;
  75. printf("%d\n",p-uN);
  76. }
  77. return ;
  78. }

HDU 3289 Cat VS Dog (二分匹配 求 最大独立集)的更多相关文章

  1. hdu 2768 Cat vs. Dog (二分匹配)

    Cat vs. Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  2. hdu 3829 Cat VS Dog 二分匹配 最大独立点集

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3829 题目大意: 给定N个猫,M个狗,P个小朋友,每个小朋友都有喜欢或者不喜欢的某猫或者某狗 管理员从 ...

  3. hdu 3829 Cat VS Dog 二分图匹配 最大点独立集

    Cat VS Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Prob ...

  4. HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配)

    HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配) Description The zoo have N cats and M dogs, toda ...

  5. HDU——2768 Cat vs. Dog

    Cat vs. Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  6. HDU 2063 过山车(二分匹配入门)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 二分匹配最大匹配数简单题,匈牙利算法.学习二分匹配传送门:http://blog.csdn.ne ...

  7. HDU - 1045 Fire Net(二分匹配)

    Description Suppose that we have a square city with straight streets. A map of a city is a square bo ...

  8. hdu 1528 Card Game Cheater (二分匹配)

    Card Game Cheater Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  9. HDU 3829——Cat VS Dog——————【最大独立集】

    Cat VS Dog Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit S ...

随机推荐

  1. c++ 私有函数 头文件设计

    clock.h #ifndef CLOCK_H_INCLUDED #define CLOCK_H_INCLUDED class Clock {public: static void HandleExd ...

  2. 初试docker以及搭建mysql on docker

    前一阵阅读了google的borg论文,在最后的related works和总结中发现了kubernetes.从论文中了解的kubernetes这个东西很有意思,按照论文所说,它的实现有希望解决an ...

  3. 线程以及数据对象的wait()和notifyAll()方法

    正在运行的程序称作一个进程,一个进程可以包含多个线程,这些线程可以共享进程的资源,它们共用一块存储空间.那么,各个线程在访问同一个数据对象的同时,可能引起冲突,以生产者.消费者为例,就会出现队列中没有 ...

  4. tomcat配置301重定向(urlRewrite URL重写)

    tomcat默认情况下不带www的域名是不会跳转到带www的域名的,而且也无法像apache那样通过配置.htaccess来实现.如果想要把不带“www'的域名重定向到带”www"域名下,又 ...

  5. hdu 1760 A New Tetris Game 博弈论

    找sg值,可以选择暴力,也可以利用sg值的特点简化. 暴力就跟取石子一样,没什么差别,DFS搞定.把矩阵看成一个字符串,字符串就是一个状态. 其实我们也可以不暴力求sg值,因为只要当前状态能到达一个s ...

  6. hibernate 字段名最好不要使用数据库的保留字

    请看如下红色部分,show为mysql的保留字,所以我在hibernate修改show字段值的时候出现错误,原来是show跟mysql的保留字相同了 CREATE TABLE `t_letter` ( ...

  7. 多线程(一)NSThread

    iOS中多线程的实现方案: 技术 语言 线程生命周期 使用频率 pthread C 程序员自行管理 几乎不用 NSthread OC 程序员自行管理 偶尔使用 GCD C 自动管理 经常使用 NSOp ...

  8. photoshop:把路径存储为形状

    这个其实跟定义画笔步骤是一样的 路径存储为自定义形状 1.用路径选择工具(快捷键A),选中路径 2.菜单:编辑->定义自定形状 3.选择自定义形状工具(快捷键U),可以看到刚定义的形状 把当前形 ...

  9. svn的merge使用例子

    先说说什么是branch.按照Subversion的说法,一个branch是某个development line(通常是主线也即trunk)的一个拷贝,见下图: branch存在的意义在于,在不干扰t ...

  10. 通过dbms_xplan.display_cursor识别低效的执行计划

    dbms_xplan.display_cursor定义: function display_cursor(sql_id           varchar2 default  null,        ...