摘要:
//题目类型:纯最大流//算法实现:ISAP算法(邻接表实现) #include<iostream>#include<cstdio>//#include<conio.h>#include<string.h>using namespace std;const int maxn=201; const int maxm=201;struct node{ i... 阅读全文
摘要:
//题目类型:最大流(多源点、多汇点)构图简单题 //解题思路:分别添加超级源点和超级汇点,使用ISAP算法实现,另外本题的输入与输出也应该特别学习 #include <iostream>#include <queue>//#include <conio.h>using namespace std;#define arraysize 205int maxData... 阅读全文
摘要:
关于此算法的介绍可参看此为牛人的博客:http://www.icycandy.com/blog/template-of-broaden-the-shortest-path-algorithm/comment-page-1另外在《算法艺术与信息学竞赛》中也有详细的解释。 阅读全文
摘要:
#include <iostream>#include <queue>#define msize 1024 //最大顶点数目using namespace std;int d[msize]; //标号int r[msize][msize]; //残留网络,初始为原图int num[msize]; //num[i]表示标号为i的顶点数有多少int pre[msize]; //... 阅读全文
摘要:
有关最大流的解释看《算法导论》和博客中的相关内容 模板(C++):#include <iostream>#include <queue>//#include <conio.h>using namespace std;#define arraysize 201int maxData = 0x7fffffff;int capacity[arraysize][arra... 阅读全文
摘要:
算法简介 SPFA(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算。 它可以在O(kE)的时间复杂度内求出源点到其他所有点的最短路径,可以处理负边。算法流程 SPFA对Bellman-Ford算法优化的关键之处在于意识到:只有那些在前一遍松弛中改变了距离估计值的点,才可能引起他们的邻接点的距离估计值的改变。因此,算... 阅读全文
摘要:
//题目类型:SPFA(邻接表实现) //变量名字一定注意不要重复,因为此wa了n次。 #include <vector>#include <queue>//#include <conio.h>#include <iostream>using namespace std;#define arraysize 501int n,m,wnum;int ma... 阅读全文
摘要:
Bellman-Ford算法流程分为三个阶段:(1) 初始化:将除源点外的所有顶点的最短距离估计值 d[v] ←+∞, d[s] ←0;(2) 迭代求解:反复对边集E中的每条边进行松弛操作,使得顶点集V中的每个顶点v的最短距离估计值逐步逼近其最短距离;(运行|v|-1次)(3) 检验负权回路:判断边集E中的每一条边的两个端点是否收敛。如果存在未收敛的顶点,则算法返回... 阅读全文
摘要:
//题目类型:典型的差分约束(Bellman-Ford算法实现) 差分约束的讲解见《算法导论》 假设X[i]表示横坐标,对于 a b d 需要满足:1)如果是喜欢关系,X[b] - X[a] <= d,于是加一条 a 到 b 权为 d的边;2) 如果是讨厌关系,X[b] - X[a] >= d,即X[a]-X[b]<=-d,于是加一条 b 到 a 权为 -d的边;有负环输出 -1... 阅读全文
摘要:
//题目类型:最大流入门题//解题思路:使用EK算法实现(利用广搜寻找增广路径,直至找到所有的增广路径) #include <iostream>#include <queue>//#include <conio.h>using namespace std;#define arraysize 201int maxData = 0x7fffffff;int capa... 阅读全文