图论
文章平均质量分 78
kdqzzxxcc
这个作者很懒,什么都没留下…
展开
-
POJ 3159 good luck to me
临行前最后一题,居然还不给我1A。题意,给出一堆B-A直接差分约束求最短路,即最大值即可。初值将1设为0,那么最大差值就是dis[n],AC。但是这道题居然卡SPFA,太神奇了。然后要DIJ+HEAP才可以。看了DISCUSS说,SPFA把队列改成栈就能过,真是神奇。#include #include #include #include #include原创 2013-10-17 16:39:30 · 856 阅读 · 0 评论 -
ZOJ 3717 HDU 3622 二分+2-SAT
题意:给你N组气球,每组有2个气球,每组要取一个气球,问最后使得N个气球都不相交,则气球半径R最大是多少。思路:直接二分半径,然后2-sat判可行性。SCC之后如果有两个同组的点在同一个强联通分量里,那么则不可行。这道题注意最后的二分结束之后还要取三位小数,看取了之后是否还是符合情况的,最后的那个 操作是看别人的。。我WA到死了。。我感觉这题这里太坑了。。。#include #i原创 2013-08-05 10:44:19 · 1078 阅读 · 0 评论 -
POJ 2337 输出欧拉路径
太无语了。这道题做了一整天。主要还是我太弱了。以后这个就当输出欧拉路径的模版吧。题目中的输出字典序最小我有点搞不清楚,看了别人是这么写的。但是我发现我过不了后面DISCUSS里面的数据。题意理解问题还是题目问题?这道题大致以下分几步吧。判断图是否连通,用并查集判断即可。判断图是否有欧拉回路或者通路,判断出度和入度即可,若是欧拉通路,找出起点。DFS找出欧拉路径输原创 2013-07-29 22:17:11 · 1618 阅读 · 0 评论 -
POJ 2513 TRIE树&& 欧拉通路&&欧拉回路
题意:每次给你一根木棒,木棒收尾有两个单词,两根木棒单词一样的位置可以相连,问最后是否可以连成一根木棒。思路:一开始直接用MAP来HASH,然后就T了。后来发现其实每个单词最后10个字母,直接用TRIE来存每个单词查询的时候复杂度其实差不多也是O(1)的。还要注意要用并查集来判图是否连通。蛮综合的一道题。#include #include #include #includ原创 2013-07-29 15:13:47 · 1084 阅读 · 0 评论 -
ZOJ 2588 无向图求桥,有重边
这道题我本来不想写的,因为和前面的有道题一样的类型。但是我为什么写这道题的原因是想提醒自己看清题目。我又看错题了。。将点的数量看成了10^3,而却ZOJ这道题,数组开小了居然是TLE,目测跟内存的调用有关?不懂。所以,我就DEBUG了超久。细节决定成败啊。题意:就是给你无向图,然后求出桥,输出他们的编号,注意有重边。直接套用以前的模版就可以了。#include #includ原创 2013-07-30 10:34:22 · 1416 阅读 · 0 评论 -
POJ 1637 混合图求欧拉回路 最大流实现
前面讲过了无向图,有向图求欧拉回路,欧拉通路的做法。可以直接根据度数来判断,当然前提是这是一个连通图。这道题既有无向边,又有有向边,然后求欧拉回路。采用的方法是最大流。具体处理方法。首先,我们对无向边,进行随意定边。定完边之后,求出每个点的出度入度。如果某个点的出度入度之差为奇数,那么就无法形成欧拉回路。接下来所有的点的度数之差都是偶数了,对于有向边,我们不需要处理。对于无原创 2013-07-29 14:15:04 · 1103 阅读 · 0 评论 -
POJ 1386 有向图欧拉通路
题意:给你一些字符串,这些字符串可以首位相接(末位置如果和另一个字符串的首位置相同的话就可以相连) 。然后问你是否可以全部连起来。思路:就是取出每个字符串的首尾位置,然后求出出度和入度,根据有向欧拉通路的性质,可以求出是否可以组成欧拉通路 。当然还得考虑一下这个图是否是连通图,这里可以用并查集记录边的集合。最后判断是否是一个连通图。欧拉通路水题。#include #include原创 2013-07-27 22:02:48 · 2218 阅读 · 0 评论 -
POJ 3694 LCA
题意:有N台电脑,他们之间有M条无向边。然后询问,每次在他们之间加一条边,剩余的桥有多少。思路:其实这题都不需要缩点了。。直接记录每条桥的位置,然后每次询问进行一次LCA,当询问到桥时,桥数减1,下次询问就不会再计数了。#include #include #include #include #include #include #include #include原创 2013-07-27 10:07:30 · 1140 阅读 · 0 评论 -
POJ 1300 欧拉通路&欧拉回路
系统的学习一遍图论!先介绍一些概念。无向图:G为连通的无向图,称经过G的每条边一次并且仅一次的路径为欧拉通路。如果欧拉通路是回路(起点和终点相同),则称此回路为欧拉回路。具有欧拉回路的无向图G称为欧拉图。有向图:D为基图连通的有向图,则称经过D的每一条边并且仅一次的路径为有向欧拉通路。如果该通路是回路,则称为有向欧拉回路。具有有向欧拉回路的有向图D称为有原创 2013-07-27 16:14:36 · 1295 阅读 · 0 评论 -
HDU 4612 (13年多校第二场1002)无向图缩点,有重边
这道题是多校的题,比赛的时候是一道纷纷水过的板刷题。题意:给你一些无向边,只加一条边,使该图的桥最少,然后输出最少的桥。思路:当时大致想到思路了,就是缩点之后找出最长的链,然后用总的桥数减去链上的桥数。也是这么写的,但是卡在了重边上。。还是接触的题目太少了。。#include #include #include #include #include #include原创 2013-07-26 16:27:42 · 998 阅读 · 0 评论 -
POJ 2112 二分+dinic
题意:给出N,C,M,N是挤奶器的数量,C是奶牛的数量,M是每个挤奶器最多给多少只奶牛使用。给出一个(N+C) * (N+C)的矩阵,代表挤奶器和奶牛之间的距离,0代表无法到达,这个坑了我好久。问:如何在满足最大流的情况下使某个奶牛走的最长距离最短。思路:先跑一边floyd,dis[][] = 0 ,无法到达,所以需要特判,这里WA了5 6 次。二分边的长度,每次建一次图,满足小于原创 2013-04-26 20:49:19 · 1045 阅读 · 0 评论 -
POJ 1149 网络流
题意:有一些pighouse,里面有一些pig,但是这些pighouse的钥匙都在一些顾客的手上,每个顾客过来都会打开所有可以打开的pighouse,然后他有一个购买数量,购买后老板可以根据后面顾客的需求将pig放进任意的pighouse里面,老板知道每个顾客的信息,问最多能卖出多少pig。差不多就是这个意思。建图:首先知道顾客是按顺序来的,那么每个pighouse的第一个顾客和源点连起来,流原创 2013-04-25 21:41:27 · 896 阅读 · 0 评论 -
HDU 1569 网络流dinic 模板
贴个模板,以前学的EK算法算起来年纪比我还大一倍了,该换个模板了。还有刚才CSDN肯定BUG了。。。。。#include #include #include #include #include #include #include #include #include #include #include #include #define PI acos(-1.0)原创 2013-04-25 00:03:14 · 1457 阅读 · 0 评论 -
POJ 2195 Going Home 费用流模版题(附KM算法,转)
题意:给出一个n*m的图,其中m是人,H是房子,每个人移动一步需要一块,问所有人移动到房子里的最少花费。建图:建立一个超级源点和超级汇点,S=0,T=2*num+1。从源点到所有的人建立一条流,容量cap[S][i]=1,费用cost[S][i]=0;从房子到汇点建立一条流,容量cap[j][T]=1,费用cost[j][T]=0;建立所有人到所有房子的流,cap[i][j原创 2012-09-27 00:05:42 · 1998 阅读 · 0 评论 -
POJ 2516 Minimum Cost 费用流
题意:有M个货物供应点,它提供k种货物,有N个商店,这N个商店分别要从货物点订购一定量的这k种物品,每个供应点对这k种货物的供应量不同,每个商店对k种物品的需求量也不同,每个货物供应点向每个商店送不同种货物的单个物品的花费不同,现在给出货物供应点、商店、k种货物、花费间的关系,现在让你针对商店给出的订单,让你决定如何使所有供应点完成订单任务的最小花费,若能完成任务,则输出最小花费,否则输出-1.原创 2012-09-26 00:35:54 · 908 阅读 · 0 评论 -
POJ 3281 Dining 网络流
题意:给出N,F,D。表示N头牛,F种食物,D种饮料。接下来2-N+1行,输入n,m代表第i头牛喜欢的食物种类为n,饮料种类为m。接下来输入n个数,代表食物的编号,输入m个数,代表饮料的编号。输出最多能满足多少头牛吃上喜欢的食物和饮料。思路:将牛拆成2个点,左边为食物,右边为饮料。s---食物---牛---牛----饮料---e.每条边的限制流量为1.#includ原创 2012-09-17 21:29:48 · 634 阅读 · 0 评论 -
HDU 4009 不定根最小树形图
讲一下建图过程,首先建立一个超级源点S,对于这个源点,向每个HOUSE连一条有向边,权值为该HOUSE建立WELL的费用,即高度*X。然后每个可以连边的WELL之间,费用为曼哈顿距离*Y,然后考虑两边的高度,如果需要链接PUMB,则在该费用上+Z。这样建图之后,以S为根,跑一遍最小树形图算法即可。CODE:#include #include #include #include原创 2013-08-19 17:06:45 · 821 阅读 · 0 评论 -
HDU 2121 不定根最小树形图
题意:给你一张有向图,问是否能找出一个点,使得他到所有点的距离最小。思路:还是不定根最小树形图,虚拟一个S作为根,与所有点相连,然后跑一遍朱刘算法。至于找出这个点,我们将S与所有点都连起来的时候,是从小到大连的。所以这个边的编号是可以代表点的编号的。例如n = 4 , m = 3 .那么在原来3条边的基础上,第4条边就是S->0 ,同理第n条。所以在找点的时候我们可以只记录这个边的原创 2013-08-19 20:05:33 · 966 阅读 · 0 评论 -
POJ 3164 最小树形图
这题才是最小树形图的基础题,题意就不赘述了,敲这道题的时候发现一个很坑的情况。因为平时输入的时候用惯了输入优化,所以对于这些输入我一般都直接上输入优化的,但是这道题让我T了20次之后我才发现输入优化居然是T的原因,我改成scanf后就A掉了。比如下面那段代码的注释处,改成输入优化就T了。不解,求解答。#include #include #include #include #原创 2013-08-19 16:14:24 · 799 阅读 · 0 评论 -
uvalive 4885 差分约束
就是差分约束的裸题,因为今天比赛时间来不及,没搞完。贴个模板。具体关于差分约束系统的解释请搜其他博客。我用最长路和最短路都实现了一遍。对于(>=)的系统,求最长路。对于(然后SPFA之前,我们可以将所有的点都入队。这样就相当于一个超级源点了。最长路:#include #include #include #include #include #include原创 2013-10-16 01:27:47 · 1041 阅读 · 0 评论 -
POJ 3692 最大独立集
题意:有G个女生,B个男生,所有的女生都互相认识,所有的男生都互相认识,还有N对男女,他们互相认识。问从中选出最多的人数,是的他们全部互相认识。思路:这道题的构图很巧妙,对于他的补图构图,对于所有互相认识的人,我们置Map[i][j] = 0 ,那么不认识的人置为1.因为最大独立集中所有的点相互都没有边,即他们之间互相都有边,所以这道题就转化成了求最大独立集。最大独立集=点数-最大原创 2013-10-13 01:26:08 · 1346 阅读 · 0 评论 -
UVALIVE 4970 最小权匹配
首先贴一下这道题的BNU地址,UVA地址自己找吧。http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=11852题意:这道题的意思就是,给你N个棋子的坐标,这些棋子的走法是象棋中的马的走法。然后再给你N个坐标终点。问所有的棋子走到其中一个坐标上,不能有重复,最少的步数是多少。思路:这道题直接搜显然爆,因为他的坐标范围都是int ,所原创 2013-10-12 00:41:42 · 1047 阅读 · 0 评论 -
HDU 4081 MST
这道题在LRJ的书上看到,今天回过头来继续看这题,发现很多东西都已经明白了。题意:有N个城市,每个城市有一个坐标和人口。现在要建一些边使得他们都联通,花费就是这些边的长度,然后有一条边可以免费。问免费一条边之后,使得免费的该条边的两个城市的人口/剩下来的边的长度 ,这个比值最大。思路:首先做一遍MST,求出MST之后,我们枚举每条边,看这条边是否可以删除,也就是免费。那么删除一条边原创 2013-09-22 00:59:12 · 1156 阅读 · 0 评论 -
UVAlive 6199 不定根最小树形图
首先是最小树形图的介绍。看这个博客。最小树形图上面介绍的很详细了,我就讲一下这道题的题意。首先给出一些二维点坐标,这些坐标之间构成一些有向图,根据题意,假设两个点a(x1 ,y1) ,b(x2 ,y2) .当y1 b。就是每个点只能连y坐标大于他的点,然后就构成了一张有向图。最后求出最少的距离可以使得所有的点都连起来。刚开始以为直接求出两两之间的距离,然后用kruskal原创 2013-08-19 15:09:38 · 869 阅读 · 0 评论 -
UVAlive 6129 最小权匹配
题意:给你N个工作和N个工作,每个工作分为2个部分,必须先完成这个工作的第一部分,才能再做第二部分。每个工作分别完成一个工作的上下部分,不能完成两个工作的同一部分。最后输出每个工作完成的工作的部分,和总时间。最后输出一个等待的时间。思路:分两次进行匹配,先对每个工作的第一部分进行匹配,做一次最小权匹配,然后对于第二部分,我们进行建图的时候就要注意,当前工作的上部分是否已经完成,所以原创 2013-08-29 16:59:49 · 1148 阅读 · 0 评论 -
POJ 2400 最小权匹配
吐槽:首先,这道题的输入居然是错的。要将上下两个矩阵的位置换一下才可以出样例,也就是上面那个矩阵是employee对Supervisor的打分,下面那个矩阵才是Supervisor对employee的打分。题意:给出两个矩阵,分别是employee对supervision的打分和supervision对employee的打分。当然矩阵中给出的不是分数,而是进来的先后顺序,第一个进来的分数就是1原创 2013-08-29 15:47:43 · 990 阅读 · 0 评论 -
POJ 1698 最大流
题意:一个演员,给你N部电影,每部电影必须在M周前完成,每部电影一周有固定的拍摄时间,这个演员一天只能拍一部,问这个演员能否拍所有的电影。思路:这题可以用二分匹配,匈牙利算法搞,应该很快,我用了网络流,熟练一下模板。建图方法。S - MOVIE ,权值是电影的拍摄次数。MOVIE - 天数 ,将MOVIE和能拍摄的天数连起来,权值是1。天数 - T ,将所有天数和T连起来,权值原创 2013-04-26 22:05:47 · 990 阅读 · 0 评论 -
POJ 3686 最小权匹配
题意:有N个工作,可以由M个工厂完成,但是每个工厂一次只能完成一个工作,并且完成这个工作之前不能换别的工作。问完成时间的平均值最少是多少。思路:很神奇的建图,完全是突破天际了。偶然间看到一种写法,突然感觉这个代码风格有点像魏神的,然后去他博客里一搜,居然真是。来个传送门神牛博客/*****以下转自上述博客********/假设某个机器处理了k个玩具,那么对于这些玩具,有两种时间原创 2013-08-29 11:24:07 · 812 阅读 · 0 评论 -
POJ 3565 最小权匹配
题意:给你N个白点,N个黑点,将白点和黑点两两连起来,使得连起来之后的线段不想交。思路:这题怎么看都像是计算几何,那么我们怎么把他转化称KM问题呢。首先,这道题只有黑点和白点,这很容易让人想到匹配问题,那么为什么最佳的完备匹配,假设线段a - b , c- d ,相交,那么可以肯定dis(a,c) + dis(b,d) 所以,最佳匹配的情况下,不会出现两条线段相交的情况。所以直接套用K原创 2013-08-28 21:41:17 · 931 阅读 · 0 评论 -
POJ 1904 HDU 4685
这两道题差不多,POJ这道我很久以前就做过,但是比赛的时候居然没想起来。。POJ 这道题的题意是,N个王子每个人都有喜欢的公主,当他们选定一个公主结婚时,必须是的剩下的人也能找到他喜欢的公主结婚。思路,首先对于王子,对于每一个他喜欢的公主,直接连边,然后再根据已经给出的匹配方案,建立公主->王子的边。最后求出SCC后在同一强联通分量里的王子和公主就可以了。代码就不贴了下面再讲一原创 2013-08-16 15:05:22 · 1169 阅读 · 1 评论 -
HDU 4568 SPFA + TSP
这道题是长沙邀请赛的题,当时是道签到题。这种题还是很常见的,讲一下思路。首先是预处理出每个宝藏之间的距离,还有到边的距离,直接对每个宝藏进行一次SPFA就可以了。然后就是经典的求TSP的过程。#include #include #include #include #include #include #include #include #include #inclu原创 2013-08-09 16:07:39 · 994 阅读 · 0 评论 -
HDU 4571 SPFA+DP
好题,长沙邀请赛的一道题。这种题还是蛮常见的,SPFA+DP优化,记得上次北大校赛就有一道。根据题意,我们可以虚拟两个超级源点和超级汇点,源点到所有点的距离都是这段距离加上参观的时间。所有点到汇点的距离就是该点到终点的距离。这样控制之后,对于终点就有2个选择了,路过或者参观。对于途中除起点终点以外的点,我们可以先进行一遍floyd,然后根据他们的val值进行连边,值是两点之间的距离原创 2013-08-20 10:03:44 · 839 阅读 · 0 评论 -
POJ2263&&1797 最大生成树
两题都是求最大生成树中的最小值。当找到起点与终点的时候退出。没什么陷阱,直接贴代码。1797#include #include #include #include #include #include #include #include #include #include #include #include #define Max 100000#define原创 2012-08-18 14:00:30 · 1303 阅读 · 1 评论 -
POJ 1273 Drainage Ditches 网络流基础题
题目扫了一眼,直接EK求解,1A。#include #include #include #include #include #include #include #include #include #include #include #include #define PI acos(-1.0)#define Max 205#define inf 1<<28#defi原创 2012-08-18 23:56:48 · 841 阅读 · 0 评论 -
POJ 1459 Power Network 网络流基础题
题意:输入:N个点,N1个发电厂,N2个用电厂,M条路。输入M条路,s,e,l.代表点s-e的容量是l。输入N1个发电厂,s,l.代表s产生l的电。输入N2个用电产,s,l,代表s用掉l的电。Sample Input2 1 1 2 (0,1)20 (1,0)10 (0)15 (1)207 2 3 13 (0,0)1 (0,1)2 (0,2)5 (1,0)1 (1,原创 2012-08-18 21:12:32 · 1098 阅读 · 0 评论 -
Edmonds_Karp 算法 (转)
找了好久终于在这个牛这里找到为什么反向边要加回流量的原因了,因为是初学教程,所以我会尽量避免繁杂的数学公式和证明。也尽量给出了较为完整的代码。本文的目标群体是网络流的初学者,尤其是看了各种NB的教程也没看懂怎么求最大流的小盆友们。本文的目的是,解释基本的网络流模型,最基础的最大流求法,即bfs找增广路法,也就是EK法,全名是Edmond-Karp,其实我倒是觉得记一下算法的全名和来历可以不转载 2012-08-18 16:57:40 · 3880 阅读 · 0 评论 -
POJ 2553 强连通分量+缩点+求出度
求强连通分量,缩点求出出度为0的点,从小到大输出。英语不好这题读起来真拗口。#include #include #include #include #include #include #include #include #include #include #include #include #define PI acos(-1.0)#define Max 10原创 2013-04-12 23:28:50 · 911 阅读 · 0 评论 -
POJ 1236 强连通分量+缩点+入度出度
题意:给出一些学校之间的关系,即有向边。问题1:最少需要多少个学校可以到达所有学校。问题2:最少需要加多少条边,可以使所有学校互相到达,即整个图强连通。对于问题1:我们只需缩点后求出入度为0的强连通分量个数。对于问题2:求出入度为0的个数,出度为0的个数,输出较大值即可。需要说明的是,当整个图已经是强连通时,问题2的答案是0,需要特判。这里WA了一次。#include原创 2013-04-13 11:49:58 · 959 阅读 · 0 评论 -
POJ 2762 强连通 + 缩点+判断入度出度
题意:给你一些点,和有向边。问你任选两点,是否可以单连通。即选择x ,y 两点,存在x -> y 或者y->x都可以。思路:先求出强连通分量,然后缩点求出入度和出度。如果入度为0的分量大于等于2或者出度为0的分量大于等于2,那么则不可能单联通。想一下还是很好理解的,拿入度为0的讲,如果存在两个强连通分量入度为0,那么这两个点集中的点必然不能单连通。同理出度为0。加了输入外挂,4原创 2013-04-13 12:23:27 · 1235 阅读 · 1 评论 -
周赛 HDU 2767 1269 1872 强连通
HDU 2767题意:给出一些点之间的关系,然后问最少添加多少条边可以使这张图强连通。裸题,唯一的trick就是判断图一开始就是强连通图的时候输出为0,这里没想清楚,导致卡了半小时。#include #include #include #include #include #include #include #include #include #include #in原创 2013-04-15 10:18:09 · 959 阅读 · 0 评论