模板整理——图论·最短路·spfa

原创 2017年09月27日 20:59:05

思想:每次取出队首u,弹出队首,松弛它的出边,并把u本次松弛的出边连接的未入队的点入队,若一个点入队次数超过n,说明有负权圈

时间复杂度:O(m*k)[k是常数,听说是2or3,蒟蒻表示不清楚~] 那就假设是对的吧~

queue <int> q;
bool spfa(int s)
{
    for (int i=1; i<=n; i++) dis[i]=oo; 
    dis[s]=0;
    memset(in,0,sizeof(in));
    memset(vis,0,sizeof(vis));
    q.push(s);  
    vis[s]=1; 
    in[s]=1;
    while(!q.empty())
    {
        int u=q.front();
        q.pop();  
        vis[u]=0;
        for (int i=head[u]; i; i=next[i])
        {
            int v=vet[i];
            if (dis[v]>dis[u]+val[i])
            {
                dis[v]=dis[u]+val[i];
                if (!vis[v])
                {
                    vis[v]=1;
                    in[v]++;
                    q.push(v);
                    if (in[v]>n) return 1;
                }
            }
        }
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

(最短路径算法整理)dijkstra、floyd、bellman-ford、spfa算法模板的整理与介绍

这一篇博客以一些OJ上的题目为载体,整理一下最短路径算法。会陆续的更新。。。   一、多源最短路算法——floyd算法       floyd算法主要用于求任意两点间的最短路径,也成最短最短路径问题。...
  • caihongshijie6
  • caihongshijie6
  • 2014年05月23日 19:45
  • 4739

最短路算法详解(Dijkstra/SPFA/Floyd)

常用的图论最短路算法详解(dijkstra/SPFA/floyd)
  • murmured
  • murmured
  • 2014年02月16日 13:08
  • 2587

[图论]最短路问题 dijkstra算法

今天研究的是图论中的一类基础问题:最短路问题 最短路问题是图论中最基础的问题,在程序设计竞赛试题中也经常出现。最短路是给定两个定点,在以这两个点为起点和终点的路径中,边的权值和最小的路径。如...
  • u012848631
  • u012848631
  • 2015年05月13日 13:16
  • 1352

nyoj1006(最短路次短路spfa)

偷西瓜 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 对于农村的孩子来说最大的乐趣,莫过于和小伙伴们一块下地偷西瓜了,虽然孩子们条件不是...
  • y990041769
  • y990041769
  • 2014年05月10日 15:51
  • 2007

bfs和spfa最短路算法的区别,细节

SPFA  在形式上和BFS非常类似,不同的是BFS中一个点出了队列就不可能重新进入队列,但是SPFA中 一个点可能在出队列之后再次被放入队列,也就是一个点改进过其它的点之后,过了一段时间可能本 身被...
  • u010126535
  • u010126535
  • 2013年12月01日 21:46
  • 750

模板整理: 图论---最短路

最短路……基础但重要…… 主要有floyd,dijkstra,SPFA这种, 看数据范围的。 floyd还可以用来求传递闭包,也就是连通性的问题。 最短路问题:给出一张图,求s~t的最短路...
  • ThinFatty
  • ThinFatty
  • 2017年11月09日 09:42
  • 74

SPFA 最短路 带负权边的---- 粗了解

SPFA(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算。 算法大致流程是用一个队列来进行维护。 初始时将源加...
  • WR_technology
  • WR_technology
  • 2016年04月26日 21:28
  • 1541

最短路之 路径记录 dijkstra + floyd + SPFA 【小笔记】

引子:我们在求解最短路的时候,有的时候需要输出路径,这里就介绍下路径记录及输出的一些方法。 为了更好理解,提出一个问题: 给出n个车站,m条单向路线以及 每条路线的信息即 起点终点和对应的花费(n...
  • chenzhenyu123456
  • chenzhenyu123456
  • 2015年06月28日 11:56
  • 1695

最短路(SPFA)

算法特点(权值可正可负,判断负环) 1.用来求解单源最短路径,源点到任意点的最短路。 2.算法介绍:建立一个队列q,初始时队列里只有一个起始点,在建立一个数组dis记录起始点到所有点的最短路径,并...
  • booyoungxu
  • booyoungxu
  • 2015年07月28日 21:00
  • 257

图论-最短路问题及MATLAB程序实现

图论中的最短路问题个人理解其实是一个
  • skyworth0103
  • skyworth0103
  • 2014年07月30日 20:28
  • 1686
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:模板整理——图论·最短路·spfa
举报原因:
原因补充:

(最多只允许输入30个字)