ACM-二分图匹配
Nicetomeetu-
没有
展开
-
hdu 1150 二分图匹配
x集合是A机器的状态,y集合是B集合的状态。如果一个任务既能在A机器的i状态下完成,也能在B机器的j状态下完成,就在i,j之间连一条边。假设我们把A机器重启成i状态,那么所有可以在i状态上完成的任务都被完成了,也就是和i相连的边都被删掉。题目要我们求最少的重启次数,实际上就是求最小点覆盖。又因为最小点覆盖等于最大匹配数,只需要用匈牙利算法求出最大匹配就行了。另外要注意,两个机器初始状态是0原创 2016-12-17 16:32:53 · 485 阅读 · 0 评论 -
EOJ 1864 二分图匹配
典型的二分图匹配。x集合是组成给定的字符串的字符,y集合是立方体。x中的元素i和y中的元素j有边当且仅当,立方体j中包含有i这个字符。我们求出最大匹配数,如果最大匹配数等于|x|,则此字符串可以被立方体表示,反之不行。另外改了一些代码中不好的风格,该加空格的地方都加上了,大括号也改成换行的了,规范代码,从现在做起~~#pragma warning(disable:4996);#i原创 2016-12-17 15:21:53 · 507 阅读 · 2 评论 -
hdu 2444 二分图匹配 + dfs染色
题目意思就是给出一个图,先判断是不是二分图,如果不是输出no,否则输出最大匹配数。判断是不是二分图可以用bfs,也可以用dfs。无非就是选择一个点,先染成黑色,再判断周围的点有没有染色,没有染色则染成白色,继续把其他点染色。如果染色了且颜色也是黑色,则不是二分图,颜色不同则继续染色。这道题题目给的不是已经建好的二分图形式,也就是x集合和y集合没有明确的分开。所以我们要建成无向图,最后答案是原创 2016-12-17 10:45:30 · 456 阅读 · 0 评论 -
HDU 1083 二分图匹配
建立二分图,x集合是课程,y集合是学生。我们求最大匹配数,如果最大匹配数等于|x|那么每个课程都可以找到一个代表,反之找不到#pragma warning(disable:4996);#include #include #include #include #include #include #include #include #include #include usin原创 2016-12-16 22:30:06 · 348 阅读 · 0 评论 -
EOJ 2069 二分图匹配模板
首先要想到把题目给我们的图建成一个二分图,x集合就是有障碍物的行号,y集合就是有障碍物的列号。如果(x,y)有障碍物,就在i,j之间连一条边。一条边就是一个障碍物,当我们选中一个点的时候,就把和这个点相连的边都删掉。直到把所有的边都删除掉。所以我们要选择最少的点删除完所有的边。所以答案就是最小覆盖点。因为最小覆盖点等于最大匹配数,所以只要套匈牙利算法的模板求出最大匹配数就行了。#pragm原创 2016-12-16 17:52:18 · 711 阅读 · 1 评论