- 博客(13)
- 收藏
- 关注
原创 LCA/RMQ预处理
以HDU 3078 为例。通过LCA/RMQ,找到u,v之间的第K大值即可。 #include #include #include #include #include #include #include #include #include #include using namespace std; const int maxn = 80010; i
2013-05-23 11:32:29 683
原创 Dinic模板
#include #include #include #include #include #include #include #include #include #include using namespace std; struct Edge { int from, to, cap, flow; Edge(int from, int to,
2013-05-18 11:23:51 526
原创 拓扑排序模板
#include #include #include #include #include #include #include #include #include #include #include using namespace std; const int maxn = 110; const int maxm = 110*110; str
2013-05-07 19:31:04 580
原创 最小费用最大流模板
以POJ 2195 为例。 #include #include #include #include #include #include #include #include #include #include using namespace std; const int maxn = 10010; const int INF = 0x3f3f3f3f
2013-04-20 20:00:34 534
原创 C++bign类高精度模板
#include #include #include #include #include #include using namespace std; const int MAXN = 410; struct bign { int len, s[MAXN]; bign () { memset(s, 0, sizeof(s)); len =
2012-12-23 21:55:55 528
原创 二分多重匹配模板
以POJ 2289 为例。 #include #include #include #include #include #include #include using namespace std; const int MAXN = 1010; const int MAXM = 1010*510; struct Edge { int v; int next; }edge[MAX
2012-12-02 00:25:54 325
原创 Sap算法模板
#include #include #include #include #include using namespace std; const int MAXN = 210; const int MAXM = 210*210; const int INF = 0x3f3f3f3f; struct Edge { int v, next; int f;
2012-11-22 12:41:12 402
原创 Dinic模板
以POJ 4273为例。 #include #include #include #include #include #include #include using namespace std; const int MAXN = 210; const int MAXM = 210*210; const int INF = 0x3f3f3f3f; stru
2012-11-21 13:21:17 276
原创 DAG单源最短路径
1、基本算法 我们知道DAG上一定存在拓扑排序,且若在有向图G中从顶点Vi->Vj有一条路径,则在拓扑排序中顶点Vi一定在顶点Vj之前,而因为在DAG图中没有环,所以按照DAG图的拓扑排序进行序列最短路径的更新,一定能求出最短路径。 2、基本步骤 处理顶点V时,对每条离开的边执行松弛运算,若果给出从源点到u的一条最短路径(经过v),则更新到u的最短路径。这个过程将检查图中每个顶点的所有路径,
2012-11-20 17:55:41 473
原创 DAG单源最短路径
1、基本算法 我们知道DAG上一定存在拓扑排序,且若在有向图G中从顶点Vi->Vj有一条路径,则在拓扑排序中顶点Vi一定在顶点Vj之前,而因为在DAG图中没有环,所以按照DAG图的拓扑排序进行序列最短路径的更新,一定能求出最短路径。 2、基本步骤 处理顶点V时,对每条离开的边执行松弛运算,若果给出从源点到u的一条最短路径(经过v),则更新到u的最短路径。这个过程将检查图中每个顶点的所有路径,
2012-11-20 17:51:40 420
原创 二分匹配之匈牙利算法
匈牙利算法的原理为:从当前匹配M出发(如果没有匹配,则取初始匹配M = φ),检查没一个未盖点,然后从它出发寻找可增广路,找到可增广路,则沿着这条可增广路进行扩充,知道不存在增广路为止。 根据从未盖点出发寻找增广路搜索的办法,可以分为:1、DFS增广。 2、BFS增广。 在算法中用到的一些变量定义以及预处理如下: #include #include #include #inc
2012-11-10 16:52:13 463
原创 交叉染色法判断二分图
预处理: #include #include #include #include #include using namespace std; const int MAXN = 210; const int MAXM = 210*210; struct Edge { int v, next; }edge[MAXM]; int n, m; in
2012-11-06 15:35:36 1302
原创 Tarjan模板
Tarjan模板。 预处理: #include #include #include #include #include using namespace std; #define MAXN 50010 #define MAXM 100010 struct Edge { int v, next; int id; // for(int i =
2012-11-04 20:23:17 420
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人