二分图
Jaster_wisdom
程序员
展开
-
POJ 1469
这是一道 二分图 求最大匹配边 最经典的例子,开始我竟没有看出来。。题目大意是,给定N名学生,P名课程,一名学生可以修任意门课程,要问的是能否在N名学生中找到P个人使他们满足两个条件:每个学生代表一门不同的课程,每门课程由一名学生代表。其实把这两句话 好好咀嚼一下,发现就是 二分图中最大匹配的问题。 匹配的概念是 每个顶点只能由一条边对应。当我们求出课程的最大匹配边数,其实就是求出了 co原创 2016-03-29 19:53:15 · 543 阅读 · 0 评论 -
POJ 2446
题目大意:给定一个M*N大小的棋盘,其中的一些点是洞,无法放置卡片,卡片是占两个格子的矩形方块。现在用程序来判断 是否可以用卡片不重叠的 将整个棋盘填满?思路:看到这道题,压根刚开始没想起来用二分图,最大匹配来做。后来看了网上的博客,才有些思路。 首先要明确的是,在棋盘中,[i,j]表示的点如果i+j为偶数,那么周围的四个点的横纵坐标之和一定为奇数,反过来也一样。那么我们就可以原创 2016-03-30 20:00:07 · 524 阅读 · 0 评论 -
二分图的最大匹配(匈牙利算法)
这篇文章讲无权二分图(unweighted bipartite graph)的最大匹配(maximum matching)和完美匹配(perfect matching),以及用于求解匹配的匈牙利算法(Hungarian Algorithm);不讲带权二分图的最佳匹配。二分图:简单来说,如果图中点可以被分为两组,并且使得所有边都跨越组的边界,则这就是一个二分图。准确地说:把一个图的顶点划分为转载 2016-03-26 15:02:40 · 824 阅读 · 0 评论 -
POJ 1422 (最小路径覆盖)
题目大意:给定街道数量和交叉路口数量,以及每条路口之间有向连接,空降伞兵在岔路口,每个岔路口最多一个伞兵,伞兵可以沿着有向街道走,但是每个路口只能经过一个伞兵,问最少需要多少个伞兵才能将各个岔路口都访问到?这是一道最小路径覆盖的题目最小路径覆盖数 = 顶点数目 - 最大匹配边数关键就是 求 最大匹配边数这里用匈牙利算法。用DFS或者BFS不断的寻找增广路,找到一条的路,匹配的数原创 2016-03-26 15:04:07 · 764 阅读 · 0 评论 -
POJ 2594 (最小路径覆盖+可重点)
这是一道典型的二分匹配的题目,问的是最少需要多少个机器人可以将点全部覆盖。每个机器人散落在一个点上,每个机器人不能走回路。公式:最小路径覆盖数 = 顶点数 - 最大匹配数最大匹配数用匈牙利算法可求的。这里的关键是 每个机器人可以走过相同的点,也就是意味着 就算i和j没有边直接相连,但是如果它们都连着k的话,它们之间也可以达到。这里很明显可以用 Floyd算法,三重循环!原创 2016-03-26 22:13:15 · 535 阅读 · 0 评论 -
POJ 1325 (最小覆盖数)
题目大意: 有两类机器A,B,它们分别有m和n类工作模式,现在有k个任务,每个任务可以选择机器A的某个模式 或者 选择机器B的某个模式,模式之间的转换 需要重启,问最少需要几次重启 可以将任务 全部做完?思路:首先建图,画两个集合X,Y,分别存放A和B的工作模式,若任务i 既可以用A的模式1解决,又可以用B的模式2解决,那么将X中的1和Y中的2相连,我们可以发现,只要选择了一个模式原创 2016-03-28 17:13:48 · 706 阅读 · 0 评论