先对整幅图进行二分图染色,再跑一遍匈牙利算法。

  1. /* CODEVS1022 */
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. #include <cmath>
  6.  
  7. #define maxn 10008
  8.  
  9. struct edge{
  10. int u,v,next;
  11. }eg[maxn*];
  12.  
  13. int dx[]={,,,-};
  14. int dy[]={,-,,};
  15. int a[][];
  16. int cl[maxn];
  17. int n,m,k,sum,ans;
  18. int last[maxn],l[maxn];
  19. bool pd[maxn];
  20.  
  21. void dfs(int i,int j,int w)
  22. {
  23. int x,y,k;
  24. cl[a[i][j]]=w;
  25. for (k=;k<;k++)
  26. {
  27. int x,y;
  28. x=i+dx[k];
  29. y=j+dy[k];
  30. if ((a[x][y]!=-)&&!cl[a[x][y]])
  31. dfs(x,y,-w);
  32. }
  33. }
  34. void add(int u,int v)
  35. {
  36. eg[++sum].u=u;
  37. eg[sum].v=v;
  38. eg[sum].next=last[u];
  39. last[u]=sum;
  40. }
  41. bool find(int u)
  42. {
  43. for (int i=last[u];i;i=eg[i].next)
  44. {
  45. int v=eg[i].v;
  46. if (!pd[v])
  47. {
  48. pd[v]=;
  49. if ((!l[v])||find(l[v]))
  50. {
  51. l[v]=u;
  52. return ;
  53. }
  54. }
  55. }
  56. return ;
  57. }
  58. int main()
  59. {
  60. int i,j,k;
  61. sum=;
  62. memset(a,-,sizeof(a));
  63. scanf("%d%d%d",&m,&n,&k);
  64. for (i=;i<=m;i++)
  65. for (j=;j<=n;j++)
  66. a[i][j]=(i-)*n+j;
  67. for (int i=;i<=k;i++)
  68. {
  69. int x,y;
  70. scanf("%d",&x);
  71. if (x==) break;
  72. scanf("%d",&y);
  73. a[x][y]=-;
  74. }
  75. for (i=;i<=m;i++)
  76. for (j=;j<=n;j++)
  77. if ((a[i][j]!=-)&&!cl[a[i][j]])
  78. dfs(i,j,);
  79. for (i=;i<=m;i++)
  80. for (j=;j<=n;j++)
  81. if (cl[a[i][j]]) for (k=;k<;k++)
  82. {
  83. int x,y;
  84. x=i+dx[k];
  85. y=j+dy[k];
  86. if ((a[x][y]!=-)&&cl[a[x][y]])
  87. add(a[i][j],a[x][y]);
  88. }
  89. ans=;
  90. memset(l,,sizeof(l));
  91. for (i=;i<=m*n;i++)
  92. if (cl[i]==)
  93. {
  94. memset(pd,,sizeof(pd));
  95. if (find(i)) ans++;
  96. }
  97. //for (i=1;i<=m*n;i++) printf("%d ",l[i]);
  98. printf("%d",ans);
  99. return ;
  100. }

CODEVS1022 覆盖 (二分图染色+匈牙利算法)的更多相关文章

  1. BZOJ1443 游戏game (二分图染色+匈牙利算法)

    先对整幅图进行二分图染色,再跑一遍匈牙利算法.如果最大匹配数=点数*2,那么输出WIN. 对于任何一个非必须在最大匹配上的点,即为所求的点. Program Test375num2; type arr ...

  2. HDU 5943 Kingdom of Obsession 【二分图匹配 匈牙利算法】 (2016年中国大学生程序设计竞赛(杭州))

    Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  3. USACO 4.2 The Perfect Stall(二分图匹配匈牙利算法)

    The Perfect StallHal Burch Farmer John completed his new barn just last week, complete with all the ...

  4. HDU 2444 - The Accomodation of Students - [二分图判断][匈牙利算法模板]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2444 Time Limit: 5000/1000 MS (Java/Others) Mem ...

  5. 网络流24题 第三题 - CodeVS1904 洛谷2764 最小路径覆盖问题 有向无环图最小路径覆盖 最大流 二分图匹配 匈牙利算法

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - CodeVS1904 题目传送门 - 洛谷2764 题意概括 给出一个有向无环图,现在请你求一些路径,这些路径 ...

  6. HDU - 1045 Fire Net (二分图最大匹配-匈牙利算法)

    (点击此处查看原题) 匈牙利算法简介 个人认为这个算法是一种贪心+暴力的算法,对于二分图的两部X和Y,记x为X部一点,y为Y部一点,我们枚举X的每个点x,如果Y部存在匹配的点y并且y没有被其他的x匹配 ...

  7. UESTC 919 SOUND OF DESTINY --二分图最大匹配+匈牙利算法

    二分图最大匹配的匈牙利算法模板题. 由题目易知,需求二分图的最大匹配数,采取匈牙利算法,并采用邻接表来存储边,用邻接矩阵会超时,因为邻接表复杂度O(nm),而邻接矩阵最坏情况下复杂度可达O(n^3). ...

  8. Codevs 1222 信与信封问题 二分图匹配,匈牙利算法

    题目: http://codevs.cn/problem/1222/ 1222 信与信封问题   时间限制: 1 s   空间限制: 128000 KB   题目等级 : 钻石 Diamond 题解 ...

  9. Ural1109_Conference(二分图最大匹配/匈牙利算法/网络最大流)

    解题报告 二分图第一题. 题目描写叙述: 为了參加即将召开的会议,A国派出M位代表,B国派出N位代表,(N,M<=1000) 会议召开前,选出K队代表,每对代表必须一个是A国的,一个是B国的; ...

随机推荐

  1. CSS3 核心知识面试题

    一种常见利用伪类清除浮动的代码 .clearfix:after { content:"."; //这里利用到了content属性 display:block; height:; v ...

  2. 认识BACnet协议

    一.什么是BACnet? BACnet,Building Automation and Control networks的简称,即楼宇自动化与控制网络.是用于智能建筑的通信协议. 一般楼宇自控设备从功 ...

  3. [ZJOI2006]GameZ游戏排名系统

    Description GameZ为他们最新推出的游戏开通了一个网站.世界各地的玩家都可以将自己的游戏得分上传到网站上.这样就可以看到自己在世界上的排名.得分越高,排名就越靠前.当两个玩家的名次相同时 ...

  4. 303 Range Sum Query - Immutable 区域和检索 - 不可变

    给定一个数组,求出数组从索引 i 到 j  (i ≤ j) 范围内元素的总和,包含 i,  j 两点.例如:给定nums = [-2, 0, 3, -5, 2, -1],求和函数为sumRange() ...

  5. 史上最大型广告欺诈活动Methbot:黑客是如何每天赚到500万美元的

    根据国外安全专家的最新报告,有一群黑客正在对美国的知名企业和媒体机构进行广告欺诈活动,而这群黑客每天都可以从中赚取三百万到五百万美金. 是的,你没看错,这绝对是人类历史上最牛X的恶意广告欺诈活动!不过 ...

  6. vue(数据改变,DOM不渲染问题)

    1.组件内部,属性值地址空间内引用地址改变,DOM不能渲染. 问题举例:this.items = [[],[],[],[]] 1.在items 中,修改任意一项数组中的值,DOM是不会更新的,2.解决 ...

  7. Linux系统硬软信息

    系统硬软信息 //获取根用户权限su //升级内核 yum update kernel

  8. 04Oracle Database 登陆

    Oracle Database 登陆 EM Express Login https://localhost:5500/em/login cmd sqlplus SQL/PLUS system/code ...

  9. dorado 7 使用总结

    最近项目上需要,使用了dorado 7 ,总体感觉还可以,快速开发很方便,然而在方便的同时,难免有些太过繁琐,很多东西都封装了起来,会造成很多不便.因此快速开发的项目可以使用,其它的不推荐.现在打算将 ...

  10. iview“官方“实现的右键菜单

    博客开篇,没想到第一篇博文竟然是前端的,虽略显尴尬,但正能量溢出,你我可能遇到同样问题,在这里分享下个人方案,希望对你有用. 官方目前不提供右键菜单,这里借助Dropdown(下拉菜单)来实现,故为“ ...