二分匹配模板

[cpp] view plaincopyprint?
  1. bool makepair(int t)
  2. {
  3. int i;
  4. for(i=1;i<=n;i++)
  5. {
  6. if(path[t][i]==1 && visited[i]==0)     //i号男还没被需要并且和t号女互相喜欢
  7. {
  8. visited[i]=1;                      //被t号女需要
  9. if(match[i]==-1 || makepair(match[i]))    //关键是这里,i号男之前没被搭配掉,或者之前和i号男搭配的女有其他搭配
  10. {
  11. match[i]=t;              //t号女搭配了i号男
  12. return true;         //t号女成功找到搭配 返回真
  13. }
  14. }
  15. }
  16. return false;   //找不到搭配 返回否
  17. }
  18. void hungary()
  19. {
  20. int i;
  21. for(i=1;i<=n;i++)          //遍历1~n个女去找搭配
  22. {
  23. memset(visited,0,sizeof(visited));  //刚开始要初始化visited
  24. if(makepair(i))  //如果i号女成功找到搭配
  25. sum++;
  26. }
  27. }

bool makepair(int t) { int i; for(i=1;i<=n;i++) { if(path[t][i]==1 && visited[i]==0) //i号男还没被需要并且和t号女互相喜欢 { visited[i]=1; //被t号女需要 if(match[i]==-1 || makepair(match[i])) //关键是这里,i号男之前没被搭配掉,或者之前和i号男搭配的女有其他搭配 { match[i]=t; //t号女搭配了i号男 return true; //t号女成功找到搭配 返回真 } } } return false; //找不到搭配 返回否 } void hungary() { int i; for(i=1;i<=n;i++) //遍历1~n个女去找搭配 { memset(visited,0,sizeof(visited)); //刚开始要初始化visited if(makepair(i)) //如果i号女成功找到搭配 sum++; } }

poj

1469

1274
2239 Selecting Courses
1422 Air Raid 最小路径覆盖
1325 Machine Schedule
1719 Shooting Contest
2594 Treasure Exploration
2195 Going Home带权二分图(km算法)
2446 Chessboard
1904 King's Quest
3342 Party at Hali-Bula
3216 Repairing Company
POJ3020 - Antenna Placement

POJ 1325 最小点覆盖=最大二分匹配

POJ 1087 floyd闭包传递

POJ 1422 2594 最小路径覆盖=N-最大二分匹配,要确定题意一个点是否可以重复走,如果可以,就要用闭包传递建立二分图。

POJ 1466 最大独立团,最大独立团=顶点数减去匹配的对数,但是这里相同的两个点会匹配成两对,例如 下图

用匈牙利算法 1配2,然后2又配了1,最大匹配是两对,而实际上1和2是同一队,所以最大独立团=顶点数n-最大匹配/2

当然可以修改匈牙利算法,当1匹配到2的时候同时标记两个点都不能再匹配就行了那样最大独立团就=顶点数-最大匹配(修改的匈牙利算法),这样也快一点,用邻接表存储图会更快,不用为每个点去遍历n个点。

poj 匈牙利二分匹配 模板 poj题目相关推荐

  1. 二分查找模板及题目汇总

    文章目录 经典二分查找模板 Templete1 Templete2 Templete3 查找第一次出现target的位置 查找最后一次出现target的位置 查找与target最接近的数的位置 第一个 ...

  2. 利用匈牙利算法Hopcroft-Karp算法解决二分图中的最大二分匹配问题 例poj 1469 COURSES...

    首先介绍一下题意:已知,有N个学生和P门课程,每个学生可以选0门,1门或者多门课程,要求在N个学生中选出P个学生使得这P个学生与P门课程一一对应. 这个问题既可以利用最大流算法解决也可以用匈牙利算法解 ...

  3. POJ - 2446 Chessboard 二分匹配+建图

    题目链接 题意很简单,是二分匹配的一种常见的题型,问题就在于怎样转换到二分图上来. 首先对对n*m-k正常点进行编号,然后遍历查找每一个正常点的上下左右是否能连接(就是判断另个点是否也是正常的),如果 ...

  4. POJ 3579 二分答案

    POJ 3579 二分答案 文章目录 POJ 3579 二分答案 题目 思路 代码 题目 思路 排序,二分一下答案,然后对于每一个元素看一看加上这个答案tmp之后,在数列里面排在哪里,比a[i]+tm ...

  5. POJ - 2018 二分+单调子段和

    依然是学习分析方法的一道题 求一个长度为n的序列中的一个平均值最大且长度不小于L的子段,输出最大平均值 最值问题可二分,从而转变为判定性问题:是否存在长度大于等于L且平均值大于等于mid的字段和 每个 ...

  6. [ACM_图论] The Perfect Stall 完美的牛栏(匈牙利算法、最大二分匹配)

    描述 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们 ...

  7. Drying POJ - 3104 二分

    Drying    POJ - 3104  二分      http://poj.org/problem?id=3104 二分查找作用之一:查找结果,逆向求解. 最让HSQ学长头疼的就是洗衣服了.洗完 ...

  8. 【网络流24题】 No.3 最小路径覆盖问题 (网络流|匈牙利算法 -最大二分匹配)...

    [题意] 给定有向图 G=(V,E).设 P 是 G 的一个简单路(顶点不相交) 的集合.如果 V 中每个 顶点恰好在 P 的一条路上,则称 P 是 G 的一个路径覆盖. P 中路径可以从 V 的任何 ...

  9. POJ1325二分匹配或者DINIC(最小路径覆盖)

    题意:        有k个任务,两个机器,第一个机器有n个模式,第二个机器有m个模式,每个任务要么在第一个机器的一个模式下工作,要么在第二个机器的一个模式下工作,机器每切换一个模式需要重启一次,两个 ...

  10. 二分匹配和一般图匹配

    目录 二分匹配 匈牙利算法 练习 1 2 最小覆盖 练习 1 2 二分图一般独立集 一般图 一般图的最大独立集. 一般图匹配 带花树 增广路 联系 BFS神力 奇环 偶环 LCA 代码 二分匹配 匈牙 ...

最新文章

  1. Vue 全家桶 + Express 实现的博客
  2. 在线支付之风控系统架构选型
  3. 人人可以理解的区块链100问——区块链记录哪些信息
  4. Java什么时候该加void_平时容易忽视的地方之一:java在抽取方法时,什么时候该用void...
  5. ElementUI el-time-picker-只显示小时、分钟,分并添加范围校验
  6. 实践出真知之Spring Cloud之基于Eureka、Ribbon、Feign的真实案例
  7. 东风本田4S店违规收取续保押金 ,电台主持在线怒怼经理,反被指无教养?
  8. Swift on Linux —— 从源码开始安装
  9. 机器学习基础(四十八)—— 概率
  10. 区块链 Fisco bcos 智能合约(17)-区块链的速度困境:“贵”在信任,“慢”得其所
  11. 图像数字水印技术研究及matlab实现,基于MATLAB的数字水印技术研究
  12. GitCode 在线 Web IDE
  13. Mac 系统安装Chromedriver
  14. 使用pyqt的第一个程序--北邮人IPTV客户端
  15. Jshop小程序商城系统说明
  16. 9.4 多元复合函数求导
  17. C#的GPU加速方法
  18. PO系列之 PO接口在ECC中的开发
  19. 【微信小程序】——Mobx全局数据共享和分包
  20. 使用 Packer 自动执行 VMware vsphere 模板

热门文章

  1. flask开发restful api系列(7)-蓝图与项目结构
  2. C# 虹软离线SDK引擎 人脸识别
  3. 【炼数成金 RapidMiner 三 】关联分析、关联规则
  4. Tomcat系列(4)——Tomcat 组件及架构详细部分
  5. Python基础练习三超市存包柜模拟(优化)
  6. CSS color设置与调色板
  7. Socket通信案例
  8. centos从安装到环境配置
  9. Java修饰符public,private,protected及默认的区别
  10. 做个轻松省力的父母的几个原则