训练地址先总结下: 第一:感觉难点在于建图第二:①:对于差分不等式,a - b = c ,建一条 b 到 a 的权值为 c 的边,求的是最长路,得到的是最小值③:存在负环的话是无解④:求不出最短路(dist[ ]没有得到更新)的话是任意解第三:一种建图方法:设x[i]是第i位置(或时刻)的值(跟所求...
分类:
其他好文 时间:
2015-05-07 20:23:02
阅读次数:
193
Floyd算法:用来找出每对点之间的最短距离。图可以是无向图,也可以是有向图,边权可为正,也可以为负,唯一要求是不能有负环。
1.初始化:将Map[][]中的数据复制到Dist[][]中作为每对顶点之间的最短路径的初值,Pre[i][j] = i 表示 i 到 j 路径中 j 的前一节点。
2. k 从 1 到 N 循环 N 次,每次循环中,枚举图中不同的两点 i,j,如果Dist[i][j]...
分类:
其他好文 时间:
2015-05-04 22:07:36
阅读次数:
113
题目传送门 1 /* 2 最短路(Bellman_Ford):求负环的思路,但是反过来用,即找正环 3 详细解释:http://blog.csdn.net/lyy289065406/article/details/6645778 4 */ 5 #include 6 #include...
分类:
其他好文 时间:
2015-04-24 22:29:47
阅读次数:
108
spfa普通版就不写了,优化还是要的昂,spfa是可以判负环,接受负权边和重边的,判断负环只需要另开一个数组记录每个结点的入队次数,当有任意一个结点入队大于点数就表明有负环存在 1 #include //spfa基本上要这些头文件 2 #include 3 #include 4...
分类:
其他好文 时间:
2015-04-24 22:21:38
阅读次数:
213
题目链接:点击打开链接
题意:
给定n个点m条有向边的图, 起点s ,终点t
下面m条边 u,v, a,b 若选择这条边花费为a, 不选择花费为b
构造一条欧拉通路使得起点是s,终点是t,且花费最小。
思路:
首先能想到一个简单的思路:假设所有边都选择,然后在费用流里跑,就会出现负环的问题。。
所以为了避免负环,让所有费用都为正值:
int sum = 0;
若a>b, 则 费...
分类:
其他好文 时间:
2015-04-22 15:18:43
阅读次数:
160
题目连接:http://acm.nyist.net/JudgeOnline/problem.php?pid=973
算法分析:
spfa+负环判定
在传功的过程中如果因为f
#include
#include
#include
#include
#include
using namespace std;
const int MAXN=505;
const int INF=0x7...
分类:
其他好文 时间:
2015-04-21 18:03:19
阅读次数:
151
差分约束题。。学了一下差分约束,我觉得还是挺简单的,考虑f[u]-f[v],发现和最短路的松弛操作神似,最短路跑完之后对于一条边(v,u),显然有d[u],不就是上面差分约束的式子吗。。那就转化成最短(长)路做咯,以最短路为例了,对于每个f[u]-f[v],连一条v到u权值为c的边,然后跑最短路,如果有负环那就说明无解,没有的话跑完之后各点的d值就是解。。
对于本题,d[a]==d[b],有 d...
分类:
其他好文 时间:
2015-04-20 09:33:57
阅读次数:
143
类似poj 3621。
代码:
//poj 2949
//sep9
#include
#include
#include
#include
#include
using namespace std;
const int maxL=1024;
const int maxM=100100;
char s[maxL];
struct Words
{
int in,out,len;
}w...
分类:
其他好文 时间:
2015-04-18 08:47:33
阅读次数:
141
题意:
有向图中每个点有一个欢乐值,边有边权,要求一条环路,使环路上欢乐值得和/路径和最大。
分析:
二分参数,判断是否存在负权,这里判负圈没用spfa,用的是一种效率很高的方法。
代码:
//poj 3621
//sep9
#include
#include
using namespace std;
const int maxN=1024;
const int maxM=5012;...
分类:
其他好文 时间:
2015-04-17 11:35:23
阅读次数:
196
题意:给出n个点,m条正权的边,w条负权的边,问是否存在负环因为Bellman_ford最多松弛n-1次, 因为从起点1终点n最多经过n-2个点,即最多松弛n-1次,如果第n次松弛还能成功的话,则说明存在有负环 1 #include 2 #include 3 #include 4 #inc...
分类:
其他好文 时间:
2015-04-10 11:00:10
阅读次数:
145