单源最短路径
给定一带权图,图中每条边的权值是非负的,代表着两顶点之间的距离。指定图中的一顶点为源点,找出源点到其它顶点的最短路径和其长度的问题,即是单源最短路径问题。
Dijkstra算法
求解单源最短路径问题的常用方法是Dijkstra(迪杰斯特拉)算法。该算法使用的是贪心策略:每次都找出剩余顶点中与源点距离最近的一个顶点。
算法思想
带权图G=,令S为已确定了最短路径顶点的集合,则可用V-S表示剩余未确定最短路径顶点的集合。假设V0是源点,则初始 S={V0}。...
分类:
其他好文 时间:
2014-08-03 23:24:16
阅读次数:
392
用floyd超时了。。。注定的事情。。。题意:看案例就跑出来了。。不需要看题了把。。#include
#include
#include
using namespace std;
#include
const int INF =1999299;
int minn(int a,int b)
{
return a>b?b:a;
}
#define N 510
#define M 251000...
分类:
其他好文 时间:
2014-08-02 20:57:14
阅读次数:
449
如图,求V0到其他顶点的最短路径及其长度,
废话少说,用Dijkstra算法。我在《数据结构(C语言版)》里面的代码的基础上写了一个直接保存路径的版本。看代码,
#include
#include
using namespace std;
#define MAXINT 1000000
// src -- 为源节点
// g[][] -- 有向图的邻接矩阵
//...
分类:
其他好文 时间:
2014-08-02 18:31:54
阅读次数:
321
Greg and Graph
floyd算法的理解与灵活运用+逆向思维...
分类:
其他好文 时间:
2014-08-02 18:26:33
阅读次数:
287
大白书里面的题感觉就是没有什么固定的思路,只能认真理解学习汝佳大大的代码。这里用的Floyd判圈法,就像插图里面的一样,两个小孩,一个快一个慢,如果实在一个环形跑道,那么快的那个最终一定会“追上”慢的那个。明显这里还是有重复计算的部分,但相对其他算法来说还是比较高效的吧,我猜。。6s的题居然只用了0...
分类:
其他好文 时间:
2014-08-02 18:12:23
阅读次数:
166
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2894谈一下对贝尔曼福特的认识(参考别人的)BF是对边进行操作,dijkstra 是对点进行操作,N个顶点的最短路最多是N-1条边,所以需要循环N-1次1....
分类:
其他好文 时间:
2014-08-02 17:49:23
阅读次数:
261
一周总结费用流:BZOJ1927有n个点保证每个点都走一次,且走完n个点的最小花费。分点,保证每个点只走一次。BZOJ2324有n个点k个人保证在走完前i-1个点时,才能走第i个点,求遍历n个点的最小花费。此题建边时要用floyd求出前...
分类:
其他好文 时间:
2014-08-02 15:27:33
阅读次数:
274
?Problem A Codeforces 20C 最短路(dij,spfa)?题意:给出一张n个点m条边的无向图(2?≤?n?≤?105,?0?≤?m?≤?105),输出从1到n的任意一条最短路径。?解法:dijkstra或者spfa,用pre数组记录到达每个点最短距离的前驱结点。?注意:路径的长...
分类:
其他好文 时间:
2014-08-02 12:44:03
阅读次数:
360
题目地址:HDU 2833
这题想到了最后是通过dis[s][t]==dis[s][i]+dis[i][j]+dis[j][t]的思路来判定是否属于最短路的一条。。但是没想到可以用floyd来找最短路中的点数。。。最短路还是太渣了。。好多性质都不会利用。。
这题的思路就是通过floyd对每两个点之间的最短路条数进行计数,然后通过上面的公式(对两条路线均要判定,都符合才说明都可以走),再找最短路...
分类:
其他好文 时间:
2014-08-02 10:04:23
阅读次数:
186
~当k=0时,我们关注的是邻接矩阵的第0行和第0列,即顶点0的入边和出边;考察矩阵中其他元素,如果元素D[i][j]向第0行和第0列的投影D[0][j]和D[i][0]都有值,就说明原图中从 i 到 j 存在一条经过顶点0的有向路径 i -> 0 -> j,这样的路径包含的边数不会超过2,如果其权值...
分类:
其他好文 时间:
2014-08-02 04:01:02
阅读次数:
187