
图论
Minakami_Yuki
主业死宅,副业写代码
展开
-
UVA-10129 Play on Words
题目链接: Play on Words原创 2015-07-24 19:29:53 · 390 阅读 · 0 评论 -
POJ-2195 Going Home
题目链接:Going Home 题目大意:在NxM的地图中,存在相同数量的人和房子,一个人对应一个房子,一个人到一个房子的花费为他们的曼哈顿距离,求一一配对的情况下的最小花费。 解题思路:这是一道很裸的费用流,源点和所有人相连,汇点和所有房子相连,所有人与所有房子相连,最后跑一遍费用流模板就行了。代码如下:#include <map>#include <set>#include <cmath原创 2015-09-06 21:41:26 · 357 阅读 · 0 评论 -
POJ-2516 Minimum Cost
题目链接:Minimum Cost题目大意:有k种流通的物品,有n家店,m个供货商,每家店有k种物品的需求量,每个供货商也有k种物品的供应量,还有k个矩阵,第i行j列表示第j个供应商给第i个店第k种物品的费用。解题思路:此题的关键思路在于将k个物品分开,每次选取一个物品做一次费用流。源点与供应商相连,容量为供应量,费用为0;汇点与店家相连,容量为需求量,费用为0;供应商与店家根据费用矩阵相连,容量为原创 2015-09-07 11:36:28 · 508 阅读 · 0 评论 -
POJ-3281 Dining
题目链接:Dining 题目大意:N头牛,F个食物,D瓶饮料,每头牛有各自的喜好,问最多使多少头牛既吃到自己喜欢的食物又喝到自己喜欢的饮料。 解题思路:一开始想到的是二分最大匹配,但发现无法在匹配了牛和食物的情况下继续匹配牛和饮料。后来想到直接用网络流的方法,把一头牛拆成两个点,自身与自身相连容量为1就好了。代码如下:#include <map>#include <set>#include原创 2015-09-05 15:41:22 · 374 阅读 · 0 评论 -
POJ-1087 A Plug for UNIX
题目链接:A Plug for UNIX 题目大意:有n个插座,m个电器,每个电器有自己的名字和插头类型,还有k种转换器,每种转换器可以有无限个,转换器可以接转换器,问最少有多少电器不能插上插座。 解题思路:源点与电器,电器与插头建边,转换器输入接口与输出插头建边,插座与汇点建边,最后跑一遍dinic就行了。代码如下:#include <map>#include <set>#include原创 2015-09-05 22:56:34 · 408 阅读 · 0 评论 -
HDU-3338 Kakuro Extension
题目链接:Kakuro Extension题目大意:黑色方块中左下角的数字代表这个方块以下的的白色方块的和必须达到的值,黑色方块中右上角的数字代表这个方块以右的白色方块的和必须达到的值。解题思路:由于行和列的限制,很容易想到网络流。将源点和所有右上角有值的方块相连,将汇点和所有左下角有值的方块相连,权值为当前值减去右(下)方白色方块的个数;将数字所作用范围的白色方块与黑色方块相连,权值为8。由于每个原创 2015-09-10 15:40:25 · 414 阅读 · 0 评论 -
Uva-12118 Inspector's Dilemma
题目链接:Inspector’s Dilemma题目大意:有完全图,给出E条必经的边,起点终点任选,经过每条边的代价一样,求最小代价。解题思路:这道题可以转化成添加最少的边使最后的路径成为欧拉道路的问题,对于每个连通分量,如果奇度点大于2个则需要加边,两个连通分量之间也需要加边,求联通分量里点集的度数既可以用DFS也可以用BFS。代码如下:#include <set>#include <stack原创 2015-09-10 00:50:35 · 499 阅读 · 0 评论 -
HDU-2732 Leapin's Lizards
题目链接:Leapin’s Lizards题目大意:有若干蜥蜴要逃离所给的矩阵,矩阵上有若干柱子。蜥蜴只能从有柱子的地方开始跳跃,只能跳跃到其他柱子上或界外。柱子有自己的耐久度,每跳一次耐久度就会减1,耐久度为0的时候就不能再跳了。求最后有多少蜥蜴不能逃离矩阵。解题思路:由于有耐久度的设定,这道题可以用最大流来解决。将源点和所以蜥蜴人所在的位置建边,权值为1;将互相可以抵达的柱子间建边,权值为正无穷原创 2015-09-09 19:59:48 · 421 阅读 · 0 评论 -
Uva-10480 Sabotage
题目链接:Sabotage题目大意:求s与t点之间消除哪些边使s与t不相连且所删除的边的权值和最小。解题思路:这道题其实是求最小割的边集,由于最小割等于最大流,所以跑一遍Dinic就可以得到最小权值和,但是如何求最小割的边集呢?我们把最后的残余网络找到,会发现那些最小权值且能使s与t联通的边权已经变为了0,那么我们就可以把与s点相连且相连边的权不为零的点集找到,再把这些点相连的且边权为零的边找到,即原创 2015-09-09 20:03:15 · 374 阅读 · 0 评论 -
HDU-3081 Marriage Match II
题目链接:Marriage Match II题目大意:有2n个人,n个女孩,n个男孩,女孩有自己心仪的对象,在女孩中有f对朋友,朋友之间心仪的对象是可以传递的,求最多可以匹配多少次。解题思路: 这道题要用到并查集网络流和二分搜索。首先不要急于先建边,现将关系储存下来,接着用并查集处理朋友关系,然后二分搜索答案。在二分搜索的时候建图,将源点和女孩相连,权值为二分的答案(mid),将男孩和汇点相连权值为原创 2015-09-09 20:05:50 · 354 阅读 · 0 评论 -
HDU-4289 Control
题目链接:Control题目大意:给出s和t点,求在图中找出最少的点集,使s和t不联通。解题思路:拆点,把每个点变成一条边,权值为此点的花费,不同点之间若相连,则权值为正无穷。最后跑一遍最大流就能得到解了。代码如下:#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <cs原创 2015-09-08 00:50:42 · 400 阅读 · 0 评论