Fork me on GitHub

随笔分类 -  【图论 Graph Theory】

摘要:题意: 给出一些关系用aX =,==,Y的边,边权为b/a,表示X =: -mp[k2][k1] >= log(kb/ka)4.INCONSISTENT: 如果某个mp[i][i]为负,说明有矛盾。5.其他情况代码:#include #include #include #include #inclu... 阅读全文
posted @ 2015-01-20 19:01 whatbeg 阅读(297) 评论(0) 推荐(0)
摘要:题意: 给一些圆,要求从第一个圆的圆心走到最后一个圆的圆心,中间路径必须在某个圆内,求最短路径的长度。解法: 易知要保持在圆内且路径最短,走两圆相交的点能使路径尽量短,所以我们找出所有的两圆相交的点,再加上起点和终点,放到一个容器中,去重后,判断每两点之间的线段是否都在圆内,如果是则建边,建完所有的... 阅读全文
posted @ 2014-11-19 11:08 whatbeg 阅读(230) 评论(0) 推荐(0)
摘要:题意:给出一个距离矩阵,问是不是一颗正确的带权树。解法:先按找距离矩阵建一颗最小生成树,因为给出的距离都是最短的点间距离,然后再对每个点跑dfs得出应该的dis[][],再对比dis和原来的mp是否一致即可。首先还要判断一些东西。具体看代码吧。代码:#include #include #includ... 阅读全文
posted @ 2014-09-29 13:09 whatbeg 阅读(420) 评论(0) 推荐(0)
摘要:题意:给一篇文章,再给一些单词替换关系a b,表示单词a可被b替换,可多次替换,问最后把这篇文章替换后(或不替换)能达到的最小的'r'的个数是多少,如果'r'的个数相等,那么尽量是文章最短。解法:易知单词间有二元关系,我们将每个二元关系建有向边,然后得出一张图,图中可能有强连通分量(环等),所以找出... 阅读全文
posted @ 2014-09-19 12:21 whatbeg 阅读(258) 评论(0) 推荐(0)
摘要:题意:给一个n*m的格子,格子中有一些数,如果是正整数则为到此格子的花费,如果为-1表示此格子不可到,现在给k个宝藏的地点(k#include #include #include #include #include #include #define Mod 1000000007using names... 阅读全文
posted @ 2014-09-09 10:20 whatbeg 阅读(522) 评论(0) 推荐(0)
摘要:题意:一个展览有n个步骤,告诉你每一步在那个场馆举行,总共2个场馆,跨越场馆需要1单位时间,先给你一些约束关系,比如步骤a要在b前执行,问最少的转移时间是多少。解法:根据这些约束关系可以建立有向边,可以看出是拓扑排序问题,问题是怎样拓扑排序。进行两次拓扑排序,分别建立两个集合,一个放场馆1举行的步骤... 阅读全文
posted @ 2014-07-29 21:15 whatbeg 阅读(261) 评论(0) 推荐(1)
摘要:题意:给n个阳离子和m个阴离子,并给出相互的吸引关系,求一个最大的点集,使其中的每个阴阳离子相互吸引。解法:枚举每条边,使该条边存在,然后建立反图,求一个最大匹配,此时的点数减去最大匹配与ans求一个最大值即可。代码:#include #include #include #include #incl... 阅读全文
posted @ 2014-07-27 00:10 whatbeg 阅读(422) 评论(0) 推荐(0)
摘要:题意:给你一个传递闭包的矩阵,mp[u][v] = 1表示u可以到达v,为0代表不可到达,问你至少需要多少条边组成的传递闭包符合这个矩阵给出的关系分析:考虑一个强连通分量,如果这个分量有n个节点,那么至少只需要n条边皆可以满足传递闭包(因为此时形成环就可),所以求出所有的强连通分量,将他们缩成一个个... 阅读全文
posted @ 2014-07-26 21:58 whatbeg 阅读(447) 评论(0) 推荐(0)
摘要:题意:有n个人,m个洞。每个洞能容纳一个人,每个人到每个洞需要花费一些时间。每个人到达一个洞后可以花C的时间来挖一个洞,并且最多挖一个洞,这样又能多容纳一人。求能使至少K个人进洞的最短时间。解法:看到n个人和m个洞,并且人要进洞容易想到二分匹配,又是求极值的问题,应该是最大匹配。由于直接求极值不好求... 阅读全文
posted @ 2014-07-25 20:38 whatbeg 阅读(408) 评论(0) 推荐(0)
摘要:Stoer-Wagner算法基本思想:如果能求出图中某两个顶点之间的最小割,更新答案后合并这两个顶点继续求最小割,到最后就得到答案。算法步骤:-------------------------------------------------------------------------------... 阅读全文
posted @ 2014-07-20 16:33 whatbeg 阅读(714) 评论(0) 推荐(0)
摘要:题意:将一个无向图中的双向边改成单向边使图强连通,问最多能改多少条边,输出改造后的图。分析:1.双连通做法:双连通图转强连通图的算法:对双连通图进行dfs,在搜索的过程中就能按照搜索的方向给所有边定向,其中桥不能改造,只能保留双向边。代码:#include #include #include #in... 阅读全文
posted @ 2014-07-20 15:12 whatbeg 阅读(311) 评论(0) 推荐(0)
摘要:题意:n个城市,中间有m条道路(双向),再给出k条铁路,铁路直接从点1到点v,现在要拆掉一些铁路,在保证不影响每个点的最短距离(距离1)不变的情况下,问最多能删除多少条铁路分析:先求一次最短路,铁路的权值大于该点最短距离的显然可以删去,否则将该条边加入图中,再求最短路,记录每个点的前一个点,然后又枚... 阅读全文
posted @ 2014-07-20 10:21 whatbeg 阅读(362) 评论(0) 推荐(0)
摘要:题意:给定一个有向图,问有多少个点由任意顶点出发都能达到。分析:首先,在一个有向无环图中,能被所有点达到点,出度一定是0。先求出所有的强连通分支,然后把每个强连通分支收缩成一个点,重新建图,这样,这个有向图就变成了一个有向无环图。在这个新的图中,只需知道出度为0的点有几个即可。如果出度为0的点超过1... 阅读全文
posted @ 2014-07-10 21:34 whatbeg 阅读(304) 评论(0) 推荐(0)
摘要:原题: FZU 2169http://acm.fzu.edu.cn/problem.php?pid=2169这题貌似有两种解法,DFS和SPFA,但是DFS怎么都RE,SPFA也要用邻接表表示边,用向量表示的话会TLE,而且用SPFA有一个异或,就是题目说要沿最短路走到都城,但是SPFA是走最短路去... 阅读全文
posted @ 2014-07-08 19:40 whatbeg 阅读(249) 评论(0) 推荐(0)
摘要:原题:ZOJ 3795http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3795题目大意:给定一个有向图,要求把点分为k个集合,使得每个集合中的任意两点a, b满足a, b互相不可到达。分析:求出强连通分量后缩点,得到有向无环图... 阅读全文
posted @ 2014-07-06 16:33 whatbeg 阅读(257) 评论(0) 推荐(0)
摘要:原题:ZOJ 3668http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3668典型差分约束题。将sum[0] ~ sum[n] 作为节点,AxR w = BxR --> x(L-1) w = -A注意还有 -10000#inc... 阅读全文
posted @ 2014-07-06 12:15 whatbeg 阅读(274) 评论(0) 推荐(0)
摘要:A.方老师和缘分 http://www.cnblogs.com/whatbeg/p/3765621.htmlB.方老师和农场 http://www.cnblogs.com/whatbeg/p/3765624.htmlC.方老师炸弹 http://www.cnblogs.com/whatbeg/p/3... 阅读全文
posted @ 2014-06-15 10:39 whatbeg 阅读(367) 评论(1) 推荐(0)
摘要:二分图最大匹配的匈牙利算法模板题。由题目易知,需求二分图的最大匹配数,采取匈牙利算法,并采用邻接表来存储边,用邻接矩阵会超时,因为邻接表复杂度O(nm),而邻接矩阵最坏情况下复杂度可达O(n^3)。代码:#include #include #include #include #include #in... 阅读全文
posted @ 2014-06-15 10:37 whatbeg 阅读(506) 评论(0) 推荐(1)
摘要:即求从起点到终点至少走K条路的最短路径。用两个变量来维护一个点的dis,u和e,u为当前点的编号,e为已经走过多少条边,w[u][e]表示到当前点,走过e条边的最短路径长度,因为是至少K条边,所以大于K条边的当做K条边来处理就好了。求最短路的三个算法都可以做,我这里用的是SPFA,比较简洁。代码:#... 阅读全文
posted @ 2014-06-15 10:37 whatbeg 阅读(352) 评论(0) 推荐(0)
摘要:做法:如果有ab的有向边,连好所有边后,找入度为0的点作为起点,将其赋为最小的价值888,然后其所有能到的端点,价值加1,加入队列,删去上一个点,然后循环往复,直到队列为空,即每个点都赋予了一个权值为止。代码:#include #include #include #include #include ... 阅读全文
posted @ 2014-06-15 10:37 whatbeg 阅读(299) 评论(0) 推荐(0)