手写邻接表很麻烦。。。。所以写了一个邻接表模板,方便用vector实现,使用时看看代码注释即可#include #include #include #include #define INF 99999999;#define max_point 1000000 ////定义总共的节点数目 using ...
分类:
其他好文 时间:
2014-09-24 21:39:57
阅读次数:
199
本文章代码中的图用邻接矩阵来表示,所以算法复杂度为O(V^2)。如果用邻接表来表示,那么算法的复杂度为O(V+E)。DFS可用来判断图中是否有环,展现无向图中的连通分支。通过DFS,形成一个由多棵深度优先树所组成的深度优先森林。将原先图中的边添加到该森林之后,可以将所有边定义为以下四类:1. 树边:...
分类:
其他好文 时间:
2014-09-19 19:00:25
阅读次数:
130
实际上是求最短的避雨时间。首先将每个点拆成两个,一个连接源点,一个连接汇点,连接源点的点的容量为当前单的奶牛数,连接汇点的点为能容纳的奶牛数。floyd求任意两点互相到达的最短时间,二分最长时间,最大流判断是否可行。注意路径时间会超过int/* 最大流SAP 邻接表 思...
分类:
其他好文 时间:
2014-09-16 00:07:29
阅读次数:
346
网络流,关键在建图建图思路在代码里/* 最大流SAP 邻接表 思路:基本源于FF方法,给每个顶点设定层次标号,和允许弧。 优化: 1、当前弧优化(重要)。 1、每找到以条增广路回退到断点(常数优化)。 2、层次出现断层,无法得到新...
分类:
其他好文 时间:
2014-09-15 22:35:49
阅读次数:
271
网络流关键是建图,思路在代码里/* 最大流SAP 邻接表 思路:基本源于FF方法,给每个顶点设定层次标号,和允许弧。 优化: 1、当前弧优化(重要)。 1、每找到以条增广路回退到断点(常数优化)。 2、层次出现断层,无法得到新流(...
分类:
其他好文 时间:
2014-09-15 21:06:09
阅读次数:
196
题意:一些牛要去某一点參加聚会,然后再回到自己家,路是单向的,问花费时间最多的那头牛最少须要花费多长时间。思路:从聚会地点返回,相当于是从某一点到其它各个点的最短路径。从牛的家中走到聚会地点,能够把路径反过来变成从聚会地点到各个点的最短路径,两个最短路径值加起来就是每头牛所花费的最小时间,找出最大的...
分类:
其他好文 时间:
2014-09-10 19:11:50
阅读次数:
191
这是一个简易的Dijkstra算法的优化实现,利用了堆,这里使用C++中的优先级队列。利用STL内置的堆实现只是优化的第一步,更进一步的优化包括使用Fibonacci堆等更高级数据结构。算法中,使用邻接表作为存储图的数据结构,利用一个int数组d保存过程中及最后得到的最短路长度,再自定义一个pair...
分类:
编程语言 时间:
2014-09-09 19:58:49
阅读次数:
285
n个点,m条边,k个点有报警器,每个报警器经过后报警一次就不能再使用。
L次报警,接下来L个数字是一次次的报警顺序
保安每经过一个报警器,报警器就报一次警;
判断保安在这种报警顺序下,有没有可能已经把所有的点都走过了一遍。可能yes 不可能no;...
分类:
其他好文 时间:
2014-09-09 18:27:49
阅读次数:
225
思路:用邻接表存图,卡vector【这里被卡哭了QAQ】,用dfs遍历的顺序重新给节点编号,遍历时记录儿子数目。用dfs序建立线段树,change的时候单点更新,查询某子树上的苹果树即是查询该节点[i, i+childnum]这个区间的苹果数目,i指dfs序。总结:邻接表出边入边傻傻搞不清楚QAQA...
分类:
其他好文 时间:
2014-09-09 17:55:19
阅读次数:
243
Sap和dinic复杂度一样的优化:1.邻接表优化:如果顶点多,往往n^2存不下,这时候就要存边:存每条边的出发点,终点点和价值,然后排序一下,再记录每个出发点的位置。以后要调用从出发点出发的边时候,只需要从记录的位置开始找就可以(其实可以用链表)。优化是时间快空间节省,缺点是编程复杂度将变大,所以...
分类:
其他好文 时间:
2014-09-09 15:04:58
阅读次数:
209