图论
文章平均质量分 76
AlmostFree
这个作者很懒,什么都没留下…
展开
-
poj 1128 构图+dfs+拓扑排序
题意:给出一个堆叠后的表示,求从底向上的图片的堆叠顺序。具体描述看题目。解析:先构图,然后dfs+拓扑代码:#pragma comment(linker, "/STACK:1677721600")#include #include #include #include #include #include #include #include #原创 2016-02-19 10:52:57 · 419 阅读 · 0 评论 -
poj 2987 最大权闭合图 最大流最小割模板
题意:有一公司,公司里每个人都有自己的贡献值和自己的下属,下属也有下属。现在要裁员,每裁掉一个人,他的下属也要被裁掉,下属的下属依次类推也要裁掉。现在问,最小的裁员量和裁员完了以后最大的贡献值。解析:http://www.hankcs.com/program/algorithm/poj-2987-firing.html最大权闭合图。主要学习这种建图的抽象思维。原创 2015-08-13 10:11:17 · 411 阅读 · 0 评论 -
poj 3084 dinic最大流
题意:有一些建在一起的房间,互相之间通过门相连,一个门的控制开关在它连接的两个房间中的一个里,在有开关的房间可以任意进入没开关的另一侧房间,而在另一侧的房间中要进入有开关的房间中则需要门是开着的,现在有的房间中有入侵者,同时有一个非常重要的房间需要保护,问要保护那个房间不被入侵,最少要关上几道门。解析:主要在于建图。对于在开关侧房间的入侵者,无论关多少个门,都无法阻原创 2015-07-18 23:38:27 · 350 阅读 · 0 评论 -
poj 1459 超级源点超级汇点EK最大流
题意:有n个发电站,np个消费点,nc个转站点,m条线缆。问你输出的最大电量。解析:创建一个超级源点和超级汇点。所有发电站是源点,所有消耗站是汇点。然后问能发的最大电是多少。建完模型直接EK就行了。代码:#include #include #include #include #include #include #include #i原创 2015-07-18 17:05:27 · 1270 阅读 · 2 评论 -
poj 1273 EK最大流入门题
题意:给n条边,从 fr 到 to,有一个容量 num。然后问从1 流到 m,最多能流多少。解析:用EK求最大流,数据量比较小。代码:#include #include #include #include #include #include #include #include #include #include #include #in原创 2015-07-18 15:47:49 · 369 阅读 · 0 评论 -
poj 2135 有流量限制的最小费用最大流
题意:农场里有n块地,其中约翰的家在1号地,二n号地有个很大的仓库。农场有M条道路(双向),道路i连接着ai号地和bi号地,长度为ci。约翰希望按照从家里出发,经过若干块地后到达仓库,然后再返回家中的顺序带朋友参观。如果要求往返不能经过同一条路两次,求参观路线总长度的最小值。解析:如果只考虑去或者回的情况,问题只不过是无向图中两点之间的最短路问题。但是现在要去要原创 2015-07-29 00:06:20 · 1508 阅读 · 0 评论 -
poj 3411 dij+状压
题意:n个城市,编号为1~n,他们间有m条单向路,分别从a到b,可以在c处交P路费,也可以直接交R路费。现在从1到n,问最少的花费是多少。解析:每次取边的时候判断一下。代码:#include #include #include #include #include #include #include #include #include #原创 2015-08-10 17:18:17 · 355 阅读 · 0 评论 -
poj 2175 最小费用最大流TLE
题意:一条街上有n个大楼,坐标为xi,yi,bi个人在里面工作。然后防空洞的坐标为pj,qj,可以容纳cj个人。从大楼i中的人到防空洞j去避难所需的时间为 abs(xi - pi) + (yi - qi) + 1。现在设计了一个避难计划,指定从大楼i到防空洞j避难的人数 eij。判断如果按照原计划进行,所有人避难所用的时间总和是不是最小的。若是,输出“OPETIMAL",若原创 2015-07-29 11:19:24 · 485 阅读 · 0 评论 -
poj 3159 (spfa差分约束最短路) poj 1201
题意:每次给出b比a多不多于c个糖果,求n最多比1多多少个糖果。解析:差分约束。这个博客讲差分约束讲的比较好:http://www.cnblogs.com/void/archive/2011/08/26/2153928.html套个spfa。代码:#include #include #include #include #include #i原创 2015-02-10 22:18:20 · 469 阅读 · 0 评论 -
poj 3469 dinic网络流模板
题意:要在由核A和核B组成的双核CPU上运行N个模块。模块i在核A上执行的花费为Ai,在核B上执行的花费为Bi。有M个相互之间需要进行数据交换的模块组合(ai, bi),如果这俩模块在同一核上执行则没有花费。否则会产生wi的花费。计算执行所有模块所需的最小花费。解析:用最小的费用将对象花费成两个集合的问题,常常可以转化成最小割后顺利解决。P237如果可以通过合适原创 2015-07-28 09:52:02 · 431 阅读 · 0 评论 -
poj 3181 网络流,建图。
题意:农夫约翰为他的牛准备了F种食物和D种饮料。每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。问最多能有多少头牛可以同时得到喜欢的食物和饮料。解析:由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。如下建图:s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点:s = 0,牛1=原创 2015-07-27 19:57:09 · 370 阅读 · 0 评论 -
poj 3169 spfa 差分约束
题意:给n只牛,这些牛有些关系。ml个关系:fr 与 to 牛间的距离要小于等于 cost。md个关系:fr 与 to 牛间的距离要大于等于 cost。隐含关系: d[ i ] 解析:用以上关系建图,求1-n间最短路即可。新学了一种建图的方法。。。。。。代码:#include #include #include #include原创 2015-06-09 10:23:40 · 446 阅读 · 0 评论 -
poj 3723 kruscal,反边取最大生成树。
题意:需要征募女兵N人,男兵M人。每征募一个人需要花费10000美元,但是如果已经招募的人中有一些关系亲密的人,那么可以少花一些钱。给出若干的男女之间的1~9999之间的亲密关系度,征募某个人的费用是10000 - (已经征募的人中和自己的亲密度的最大值)。要求通过适当的招募顺序使得征募所有人的费用最小。解析:先设想无向图,在征募某个人a时,如果使用了a和b之间的关原创 2015-06-07 22:04:02 · 389 阅读 · 0 评论 -
poj 2449 第k短路 A* + spfa
poj 2449:题意:给一张图,求第k短路。解析:A* + spfa。一下转自:http://blog.csdn.net/mbxc816/article/details/7197228“描述一下怎样用启发式搜索来解决K短路。首先我们知道A*的基础公式:f(x)=g(x)+h(x);对h(x)进行设计,根据定义h(x)为当前的x点到目标点t所需要的实际距原创 2015-06-07 13:40:48 · 697 阅读 · 0 评论 -
poj 3255 次短路(第k短路) A* + spfa 或 dijkstra
题意:给一张无向图,求从1到n的次短路。解析:A* + spfa 或者 dijkstra。详解见上一题:http://blog.csdn.net/u013508213/article/details/46400189本题,spfa中,stack超时,queue的效率最高,priority_queue次之。代码:#include #include #i原创 2015-06-07 21:25:38 · 989 阅读 · 1 评论 -
poj 2446 poj 1469 poj 1274 二分图最大匹配
题意:给一张m * n的图,其中挖掉一些点,然后用1*2的小纸片来覆盖这张图,问能否将这个图覆盖。如下图:解析:将每个不为挖掉的点视为二分图的X点集,这个点的四个方向上的点视为Y点集,此时最大匹配数即为点的个数(想一想为什么)。因为有重复匹配 1和2 2和1这题用一个id数组来处理每个点的id,然后用匈牙利原创 2015-05-18 14:26:56 · 384 阅读 · 0 评论 -
hdu 5285 dfs染色+贪心(bc #48 B)
题意:问题描述青年理论计算机科学家wyh2000在教导他的小学生。共有n个小学生,编号为1−n。为了增加小学生之间的凝聚力,wyh2000决定将所有小学生分成2组,每组都至少有1个人。但是有些小学生之间并不认识,而且如果a不认识b,那么b也不认识a。Wyh2000希望每组中的小学生都互相认识。而且第一组的人要尽可能多。请你帮wyh2000求出第一组和第二组的人数是多少。如果找不原创 2015-07-20 16:11:14 · 386 阅读 · 0 评论 -
poj 2139 floyd()
题意:给定一些牛的关系,他们之间的距离为1。然后求当前这只牛到每只牛的最短路的和,除以 n - 1只牛的最大值。解析:floyd来求最短路。然后枚举求max就行了。代码:#include #include #include #include #include #include #include #include #include #in原创 2015-07-20 16:53:47 · 667 阅读 · 0 评论 -
poj 2395 最小生成树的最大边
题意:求最小生成树的最大边。解析:kruscal。昨天刚做的一道一模一样的题。代码:#include #include #include #include #include #include #include #include #include #include #include #include #define LL long原创 2015-07-20 17:19:32 · 443 阅读 · 0 评论 -
hdu 1150 二分图最大匹配最小点覆盖
题意:有两台机器A和B以及k个需要运行的任务。每台机器有n,m种不同的模式,而每个任务都恰好能在一台机器上运行。 机器A上有模式 mode_0, mode_1, …, mode_n-1,机器B上有模式: mode_0, mode_1, … , mode_m-1。 开始的工作模式都是mode_0。每个任务有对应的运行模式,(i, x, y)表示i任务对应的A B机器上的运行模式m原创 2015-07-24 22:18:33 · 359 阅读 · 0 评论 -
poj 2594 二分图最大独立集
题意:求一张图的最大独立集,这题不同的地方在于,间接相邻的点也可以有一条边,所以用floyd来把间接相邻的边也连起来。代码:#include #include #include #include #include #include #include #include #include #include #include #include #include原创 2015-07-25 09:33:29 · 407 阅读 · 0 评论 -
poj 2594 二分图最大匹配最小路径覆盖
题意:给一张 “o“ 和 ” * " 构成的图,每个 * 都可以与它四周的 * 构成一条边(如果周围是 *的话)。并且每次连完边就不能再与其他 * 相连了,问如何用最少的边把 * 都覆盖掉,求这个最小的边的数量。解析:无向图最小路径覆盖 = 顶点数 - 最大匹配 / 2代码:#include #include #include #include原创 2015-07-25 09:24:14 · 337 阅读 · 0 评论 -
hdu 1151 二分图最小路径覆盖
题意:有一个城市,所有街道都是单行道,每条街道和两个路口相连,并且是个无环的图。求最小数量的伞兵,使得这些伞兵可以访问所有路口。解析:二分图。最小路径覆盖 = 顶点数 - 最大匹配。代码:#include #include #include #include #include #include #include #include #i原创 2015-07-24 23:16:48 · 360 阅读 · 0 评论 -
poj 2226 二分图最小点覆盖
题意:R*C的地图上,“ * ”代表泥地, “ . ”代表草地。现在要你用长度不限,宽为1的木板来覆盖泥地,要求草地不被覆盖。求最少的木板数。解析:将可以连在一起的泥地按照行和列来编号,如下图:*.*. 行1 0 2 0 列 1 0 4 0.*** 0 3 3 3 0原创 2015-08-16 08:46:49 · 403 阅读 · 0 评论 -
poj 3692 二分图最大独立集
题意:幼儿园里,有G个女生和B个男生。他们中间有女生和女生认识,男生男生认识,也有男生和女生认识的。现在要选出一些人,使得这里面的人都认识,问最多能选多少人。解析:反过来建边,将不认识的男生和女生相连,然后求一个二分图的最大独立集就行了。下图很直观:点击打开链接原图:现图:、代码:#pragma comme原创 2015-08-15 18:54:23 · 337 阅读 · 0 评论 -
poj 3683 2-sat
题意:有n对新人打算在同一天举行结婚仪式,只有一个神父。第i对新人的结婚仪式时间为 sti 到 edi,在其仪式开始或者结束时,需要进行一个用时为di的特别仪式。即 si 到 si + di,或者 edi - di 到 edi,这两个时间段,该时间段需要神父在场。判断是否可以通过合理安排每个特别仪式在开始或者结束矩形,使得神父能够出席所有特殊仪式。解析:挑战程序设计原创 2015-08-16 20:44:05 · 380 阅读 · 0 评论 -
poj 2186 强连通分量个数
题意:每头牛都想成为牛群中的红牛。给n(1e4)头牛,m(5e4)条边,(A, B)表示A牛认为B牛是红牛(●ˇ∀ˇ●)。该关系具有传递性,A认为B是红牛,B认为C是红牛,则A认为C是红牛。(小明喜欢小红,小红喜欢小刚) -> ........(/▽\=)求被其他牛都认为是红牛的牛的总数。解析:被其他牛都认为是红牛的牛对应的顶点,也就是从其他所有顶点都可达的原创 2015-08-16 19:34:22 · 565 阅读 · 0 评论 -
poj 3422 有流量限制的最小费用流 反用求最大 + 拆点
题意:给一个n*n(50 * 50) 的数字迷宫,从左上点开始走,走到右下点。每次只能往右移一格,或者往下移一格。每个格子,第一次到达时可以获得格子对应的数字作为奖励,再次到达则没有奖励。问走k次这个迷宫,最大能获得多少奖励。解析:拆点,拿样例来说明:3 21 2 30 2 11 4 23*3的数字迷宫,走两次最大能获得多少奖励。将每原创 2015-08-16 11:14:39 · 482 阅读 · 0 评论 -
poj 3068 有流量限制的最小费用网络流
题意:m条有向边连接了n个仓库,每条边都有一定费用。将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。求最小的费用是多少。解析:抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。汇点与n - 1相连,费用为0,容量为2。每条边之间也相连,费用为每条边的费用,容量为1。建图完毕之后,求一条流量为2的最小费用流就行原创 2015-08-16 09:26:58 · 1359 阅读 · 0 评论 -
poj 2195 bfs+有流量限制的最小费用流
题意:给一张n * m(100 * 100)的图,图中” . " 代表空地, “ M ” 代表人, “ H ” 代表家。现在,要你安排每个人从他所在的地方移动到家里,每移动一格的消耗是1,求最小的消耗。人可以移动到家的那一格但是不进去。解析:先用bfs搞出每个M与每个H的距离。然后就是网络流的建图过程了,先抽象出源点s和汇点t。令源点与每个人相连,容量为1,费用原创 2015-08-16 10:03:34 · 420 阅读 · 0 评论 -
poj 2112 网络流+二分
题意:k台挤奶机,c头牛,每台挤奶机可以挤m头牛。现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。解析:最大值最小化,最小值最大化,用二分来做。先求出两点之间的最短距离。然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。如何求牛的数量呢,用网络流来做。从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的原创 2015-08-15 16:43:13 · 366 阅读 · 0 评论 -
poj 2914 无向图的最小割
题意:求无向图的最小割。解析:点击打开链接代码:#pragma comment(linker, "/STACK:1677721600")#include #include #include #include #include #include #include #include #include #include #include #in原创 2015-08-15 14:25:59 · 473 阅读 · 0 评论 -
hdu 1068 poj 1466 最大独立集
题意:给出一些大学二年级男男女女之间的关系,找出没有缘分的同学的最多的个数。大二病也要谈恋爱- -解析:二分图找最大独立集,因为题目给出的是双向的图,所以匈牙利最后得出的最大匹配要除以2.然后用点数-这个数就是答案了。代码:#include #include #include #include #include #include #inclu原创 2015-07-24 22:58:39 · 355 阅读 · 0 评论 -
poj 3713 三联通图
题意:给定一个n(500)个点,m(2000)条边的图,判断这张图是否三联通。三联通的定义:去掉三条边就不联通的图。解析:依旧码农产学东西。这题用的是targan来枚举点做的。枚举删掉一个点,如果删掉一个点以后,还存在割点,证明图中有一个点删掉两条边就不联通了,以此判断三联通性。代码:#pragma comment(linker, "/STACK:1原创 2015-08-12 20:27:10 · 919 阅读 · 0 评论 -
poj 3041 二分图最大匹配 最小点覆盖
刷比赛的时候刷到最小点覆盖,来复习一下这个经典。题意:给k个在n*n矩阵上的点,可以选一个横坐标或者纵坐标来射穿x或y,在x或y上的怪物都会死掉大概就是这个意思。问最小射击次数,能杀掉这些怪。解析:e.g如图:如图有四个点,(x1, y1) (x2, y1) (x1, y2) (x2, y3)将 x 坐标看成一个 x 点集, 将 y 坐标看成原创 2015-05-09 21:13:30 · 433 阅读 · 0 评论 -
poj 1511 Invitation Cards(spfa最短路)
题意是给你点与点之间的距离,要求最小生成树中原创 2014-05-09 22:29:07 · 496 阅读 · 0 评论 -
uva 515(差分约束bellman or spfa)
题意:给定一个序列的长度,然后给定若干关系,这个关系是子序列各个元素之和与某个给定整数的大小关系。要求是否存在这样一个序列满足所有给定的若干关系。解析:设s[i] = a[1] + a[2] + …a[i]。 a[si] + a[si+1] + … + a[si + ni] = s[si + ni] - s[si - 1]。所以如果a[si] + a[si+1] + …原创 2015-02-16 20:45:08 · 494 阅读 · 0 评论 -
hdu 1285(拓扑排序)
题意:给各个队间的胜负关系,让排名次,名词相同按从小到大排。解析:拓扑排序是应用于有向无回路图(Direct Acyclic Graph,简称DAG)上的一种排序方式,对一个有向无回路图进行拓扑排序后,所有的顶点形成一个序列,对所有边(u,v),满足u在v 的前面。该序列说明了顶点表示的事件或状态发生的整体顺序。比较经典的是在工程活动上,某些工程完成后,另一些工程才能继续,原创 2015-02-09 12:13:14 · 472 阅读 · 0 评论 -
poj 1860 Currency Exchange(bellman思路反用)
题意是两种货币可以互相换,原创 2014-05-10 14:01:37 · 493 阅读 · 0 评论 -
poj 1502 MPI Maelstrom(单源最短路dijkstra)
题目真是长得头疼,好多生词,给跪。大概题意就是给你原创 2014-05-01 13:36:59 · 949 阅读 · 0 评论