1. /*
  2. 怎么建图:
  3. 首先分集合:不能相连的点必然在一个集合里,即对角点
  4. 再确定怎么连边: 一个点可以向上下左右连边,如果遇到了洞则不行
  5.  
  6. dfs(i),让匹配到的点接受i作为match结果
  7. 寻找增广路时,要让v接受i,那么v原来接受的点match[v]就要重新找一个点进行匹配
  8. */
  9. #include<iostream>
  10. #include<cstring>
  11. #include<cstdio>
  12. using namespace std;
  13. #define maxn 2500
  14.  
  15. int n,m,k,hole[][],mp[maxn][maxn],id[maxn][maxn];
  16.  
  17. int vis[maxn],cnt,match[maxn];
  18. int dfs(int x){
  19. for(int i=;i<=cnt;i++)
  20. if(mp[x][i] && !vis[i]){
  21. vis[i]=;
  22. if(!match[i] || dfs(match[i])){//寻找增广路
  23. match[i]=x;return ;
  24. }
  25. }
  26. return ;
  27. }
  28. void init(){
  29. cnt=;
  30. memset(match,,sizeof match);
  31. memset(hole,,sizeof hole);
  32. memset(mp,,sizeof mp);
  33. memset(id,,sizeof id);
  34. }
  35. int main(){
  36. init();
  37. cin>>m>>n>>k;
  38. for(int i=;i<=k;i++){
  39. int x,y;
  40. cin>>x>>y;
  41. hole[y][x]=;
  42. }
  43. //给每个点重定义标记
  44. for(int i=;i<=m;i++)
  45. for(int j=;j<=n;j++)
  46. if(!hole[i][j])id[i][j]=++cnt;
  47. //建图
  48. for(int i=;i<=m;i++)
  49. for(int j=;j<=n;j++)
  50. if(!hole[i][j]) {
  51. if(i->= && !hole[i-][j])
  52. mp[id[i][j]][id[i-][j]]=;
  53. if(i+<=m && !hole[i+][j])
  54. mp[id[i][j]][id[i+][j]]=;
  55. if(j->= && !hole[i][j-])
  56. mp[id[i][j]][id[i][j-]]=;
  57. if(j+<=n && !hole[i][j+])
  58. mp[id[i][j]][id[i][j+]]=;
  59. }
  60. int ans=;
  61. for(int i=;i<=cnt;i++){
  62. memset(vis,,sizeof vis);
  63. if(dfs(i))++ans;
  64. }
  65. if(ans==cnt)puts("YES");
  66. else puts("NO");
  67. }

二分图——poj2446匈牙利算法的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

  7. (转)二分图匹配匈牙利算法与KM算法

    匈牙利算法转自于: https://blog.csdn.net/dark_scope/article/details/8880547 匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名 ...

  8. BZOJ1059 [ZJOI2007]矩阵游戏 二分图匹配 匈牙利算法

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1059 题意概括 有一个n*n(n<=200)的01矩阵,问你是否可以通过交换整行和整列使得左 ...

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

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

随机推荐

  1. sql准确判断某个ip

    问题:如图 当我执行sql要准确查找某个IP是属于哪个库室时候,我刚开始是这样写的 select * from Definition_Read_Room where HFIP like '%172.2 ...

  2. win7 设置双屏壁纸

    http://dualmonitortool.sourceforge.net/ http://www.displayfusion.com/Features/Wallpaper/ 以第一个软件为例: 1 ...

  3. day 90 跨域和CORS

    跨域和CORS   本节目录 一 跨域 二 CORS 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 跨域 同源策略(Same origin policy)是一种约定,它是 ...

  4. 8张图带你轻松温习Java知识

    年初四好,一图胜千言,下面图解均来自Program Creek 网站,目前它们拥有最多的票选. 如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟. 1 字符串不变性 下面这张图展示了这段代码做了 ...

  5. JMeter安装和环境变量搭建

    下载安装Java JDK环境,设置环境变量 elasticsearch for windows:https://www.cnblogs.com/Neeo/articles/10368280.html ...

  6. mysql之MHA、Mycat综合分析

    一.简介 MHA:  你可以把它看做是一个监控MySQL的工具,当master挂了之后,起一个slave作为master,另外一台slave重新作为新master的备库: 所以MHA的架构做好是三台数 ...

  7. HTTP协议:响应消息

    一.请求消息:客户端发送给服务器端的数据 数据格式: 1.请求行 2.请求头 3.请求空行 4.请求体 二.响应消息:服务器端发送给客户的数据 数据格式: 1.响应行: 1.组成:协议/版本 响应状态 ...

  8. centos7.3更换ssh默认登陆端口

    说明:本方法目前通用于7.1-7.3 vim /etc/ssh/sshd_config 找到Port 22下面添加一行:Port 12345保存退出. systemctl restart sshd.s ...

  9. MySQL数据库之DQL(数据查询语言)

    1.MySQL之DQL查询AS CONCAT LIKE的使用 (1)select 列名1,列名2,...... from 表名 [where 条件] 查询所有字段用*,不带where条件的话,就会把表 ...

  10. LeetCode动态规划题总结【持续更新】

    以下题号均为LeetCode题号,便于查看原题. 10. Regular Expression Matching 题意:实现字符串的正则匹配,包含'.' 和 '*'.'.' 匹配任意一个字符,&quo ...