m种阳离子 n种阴离子 然后一个m*n的矩阵 第i行第j列为1代表第i种阴离子和第j种阴离子相互吸引 0表示排斥

求在阳离子和阴离子都至少有一种的情况下 最多存在多少种离子能够共存

阴阳离子都至少须要存在一种 那么能够枚举哪2种离子共存 如果枚举a b 然后找到全部的和a能够共存的阴离子(设为x集合)以及和b共存的阳离子(设为y集合)

如今仅仅需求x集合中和y集合中最多有多少个离子能够共存 这个求最大独立集即可了 枚举全部的a b 取最大值

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <vector>
  5. using namespace std;
  6. const int maxn = 55;
  7. int vis[maxn];
  8. int y[maxn];
  9. vector <int> G[maxn];
  10. int n, m;
  11.  
  12. char a[maxn][maxn];
  13. bool dfs(int u)
  14. {
  15. for(int i = 0; i < G[u].size(); i++)
  16. {
  17. int v = G[u][i];
  18. if(vis[v])
  19. continue;
  20. vis[v] = true;
  21. if(y[v] == -1 || dfs(y[v]))
  22. {
  23. y[v] = u;
  24. return true;
  25. }
  26. }
  27. return false;
  28. }
  29. int match()
  30. {
  31. int ans = 0;
  32. memset(y, -1, sizeof(y));
  33. for(int i = 0; i < n; i++)
  34. {
  35. memset(vis, 0, sizeof(vis));
  36. if(dfs(i))
  37. ans++;
  38. }
  39. return ans;
  40. }
  41. int main()
  42. {
  43. int T;
  44. int cas = 1;
  45. scanf("%d", &T);
  46. while(T--)
  47. {
  48. scanf("%d %d", &n, &m);
  49. for(int i = 0; i < n; i++)
  50. scanf("%s", a[i]);
  51. int ans = 0;
  52. for(int i = 0; i < n; i++)
  53. for(int j = 0; j < m; j++)
  54. if(a[i][j] == '1')
  55. {
  56. int sum1 = 0, sum2 = 0;
  57. for(int h = 0; h < m; h++)
  58. if(a[i][h] == '1')
  59. sum1++;
  60. for(int h = 0; h < n; h++)
  61. if(a[h][j] == '1')
  62. sum2++;
  63. if(ans >= sum1+sum2)
  64. continue;
  65. for(int h = 0; h < n; h++)
  66. {
  67. G[h].clear();
  68. if(a[h][j] == '1')
  69. {
  70. for(int k = 0; k < m; k++)
  71. if(a[i][k] == '1' && a[h][k] == '0')
  72. G[h].push_back(k);
  73. }
  74. }
  75. int res = match();
  76. if(sum1+sum2-res > ans)
  77. ans = sum1+sum2-res;
  78. }
  79. printf("Case %d: %d\n", cas++, ans);
  80.  
  81. }
  82. return 0;
  83. }

Light OJ 1373 Strongly Connected Chemicals 二分匹配最大独立集的更多相关文章

  1. light oj 1149 Factors and Multiples(二分匹配)

    LightOJ1149 :Factors and Multiples 时间限制:2000MS    内存限制:32768KByte   64位IO格式:%lld & %llu 描述 You w ...

  2. hdu 4169 二分匹配最大独立集 ***

    题意:有水平N张牌,竖直M张牌,同一方向的牌不会相交.水平的和垂直的可能会相交,求最少踢出去几张牌使剩下的牌都不相交. 二分匹配 最小点覆盖=最大匹配. 链接:点我 坐标点作为匹配的端点 #inclu ...

  3. HDU - 1068 Girls and Boys(二分匹配---最大独立集)

    题意:给出每个学生的标号及与其有缘分成为情侣的人的标号,求一个最大集合,集合中任意两个人都没有缘分成为情侣. 分析: 1.若两人有缘分,则可以连一条边,本题是求一个最大集合,集合中任意两点都不相连,即 ...

  4. Light oj 1138 - Trailing Zeroes (III) (二分)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1138 题目就是给你一个数表示N!结果后面的0的个数,然后让你求出最小的N. 我们可以知 ...

  5. UVALive 5962 Strongly Connected Chemicals --最大独立集

    题意:给n个阳离子和m个阴离子,并给出相互的吸引关系,求一个最大的点集,使其中的每个阴阳离子相互吸引. 解法:枚举每条边,使该条边存在,然后建立反图,求一个最大匹配,此时的点数减去最大匹配与ans求一 ...

  6. hdu3829 二分匹配 最大独立集

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

  7. kuangbin带你飞 匹配问题 二分匹配 + 二分图多重匹配 + 二分图最大权匹配 + 一般图匹配带花树

    二分匹配:二分图的一些性质 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j ...

  8. Timus OJ 1997 Those are not the droids you're looking for (二分匹配)

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1997 这个星球上有两种人,一种进酒吧至少玩a小时,另一种进酒吧最多玩b小时. 下面n行是 ...

  9. BNUOJ 12756 Social Holidaying(二分匹配)

    题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=12756 Social Holidaying Time Limit: 3000ms Memo ...

随机推荐

  1. DispatcherServlet 前置控制器

    1.DispatcherServlet作用 DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容 ...

  2. php 扩展

    如何利用PHP扩展函数,扩展出自己的函数等 php扩展函数有哪些zend_parse_parameters() spprintf() RETURN_STRINGL()

  3. Vue或React多页应用脚手架

    https://github.com/zhujiasheng/vue-multipage https://github.com/MeCKodo/vue-multipage

  4. 【Henu ACM Round#18 A】 Multiplication Table

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 遍历i从1..n 看看x%i==0以及x/i<=n是否成立. [代码] #include <iostream> u ...

  5. AES加密解密&amp;&amp;SHA1、SHA加密&amp;&amp;MD5加密

    AES加密解密 SHA1.SHA加密 MD5加密 二话不说立即附上代码: package com.luo.util; import java.io.UnsupportedEncodingExcepti ...

  6. [Javascript] Compose multiple functions for new behavior in JavaScript

    In this lesson you will create a utility function that allows you to quickly compose behavior of mul ...

  7. Scala学习之爬豆瓣电影

    简单使用Scala和Jsoup对豆瓣电影进行爬虫,技术比較简单易学. 写文章不易,欢迎大家採我的文章,以及给出实用的评论,当然大家也能够关注一下我的github:多谢. 1.爬虫前期准备 找好须要抓取 ...

  8. SSM(spring,springMVC,Mybatis)框架的整合

    这几天想做一个小项目,所以搭建了一个SSM框架. 1.基本概念 1.1.Spring   Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Joh ...

  9. 第二天,导出文件sql,查询,视图view,聚合函数,反模式,字符串处理函数

    //把数据库导出到脚本文件mysqldump -uroot -p1234 --databases abc > d:/a/abc.sql CREATE TABLE stud( id INT PRI ...

  10. Css盒模型有哪几部分,标准盒模型和IE盒模型有哪些区别

    首先介绍Css的盒模型也就是标准盒模型(BOX Model) 包含了 内容(content) 内边距(padding) 边框(border) 外边框(margin) 这是大家经常用到的,也是现在的标准 ...