// 单源最短路问题
// Bellman-Ford算法
// 复杂度O(V*E) //! 可以判断负圈 #include <cstdio>
#include <iostream> // 最大边数
const int max_E=+;
// 最大定点数
const int max_N=+;
const int INF=1e9; using namespace std;
// 定义边结构体edge
struct edge
{
int from,to,cost;
}; edge es[max_E]; int d[max_N];
int N,E; void shortest_path(int s)
{
for(int i=;i<N;++i)
{
d[i]=INF;
}
d[s]=; while(true)
{
bool update=false;
// 每次更新都要遍历所有的边
for(int i=;i<E;++i)
{
edge e=es[i];
if(d[e.from]!=INF && d[e.to]>d[e.from]+e.cost)
{
d[e.to]=d[e.from]+e.cost;
update=true;
}
}
if(update==false)
{
break;
}
}
} int main()
{
scanf("%d %d",&N,&E);
for(int i=;i<E;++i)
{
scanf("%d %d %d",&es[i].from,&es[i].to,&es[i].cost);
}
shortest_path();
for(int i=;i<N;++i)
{
printf("%d ",d[i]);
}
return ;
} /*
7 10
0 1 2
0 2 5
1 2 4
1 3 6
1 4 10
2 3 2
3 5 1
4 5 3
4 6 5
5 6 9 */

// 单源最短路问题// Bellman-Ford算法// 复杂度O(V*E)
//! 可以判断负圈

#include <cstdio>#include <iostream>
// 最大边数const int max_E=10000+2;// 最大定点数const int max_N=1000+2;const int INF=1e9;
using namespace std;// 定义边结构体edgestruct edge{    int from,to,cost;};
edge es[max_E];
int d[max_N];int N,E;
void shortest_path(int s){    for(int i=0;i<N;++i)    {        d[i]=INF;    }    d[s]=0;
    while(true)    {        bool update=false;        // 每次更新都要遍历所有的边        for(int i=0;i<E;++i)        {            edge e=es[i];            if(d[e.from]!=INF && d[e.to]>d[e.from]+e.cost)            {                d[e.to]=d[e.from]+e.cost;                update=true;            }        }        if(update==false)        {            break;        }    }}

int main(){    scanf("%d %d",&N,&E);    for(int i=0;i<E;++i)    {        scanf("%d %d %d",&es[i].from,&es[i].to,&es[i].cost);    }    shortest_path(0);    for(int i=0;i<N;++i)    {        printf("%d ",d[i]);    }    return 0;}
/*7 100 1 20 2 51 2 41 3 61 4 102 3 23 5 14 5 34 6 55 6 9
*/

单源最短路 Bellman-Ford算法(有向图)的更多相关文章

  1. spfa 单源最短路究极算法

    学习博客链接:SPFA 求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm.     SPFA算法是西南交通大学段凡丁于1994年发表的.    从名字我 ...

  2. 2018/1/28 每日一学 单源最短路的SPFA算法以及其他三大最短路算法比较总结

    刚刚AC的pj普及组第四题就是一种单源最短路. 我们知道当一个图存在负权边时像Dijkstra等算法便无法实现: 而Bellman-Ford算法的复杂度又过高O(V*E),SPFA算法便派上用场了. ...

  3. 单源最短路:Dijkstra算法 及 关于负权的讨论

    描述: 对于图(有向无向都适用),求某一点到其他任一点的最短路径(不能有负权边). 操作: 1. 初始化: 一个节点大小的数组dist[n] 源点的距离初始化为0,与源点直接相连的初始化为其权重,其他 ...

  4. 单源最短路:Bellman-Ford算法 及 证明

    描述: 求图中某一点到其他任一点的最短距离. 操作: 1. 初始化 结果保存在一个dist数组里,源点的结果初始化为0,其他初始化为无穷大(如INT32_MAX). 2. 计算: 两重for循环,第一 ...

  5. 单源最短路模板(dijkstra)

    单源最短路(dijkstra算法及堆优化) 弱化版题目链接 n^2 dijkstra模板 #include<iostream> #include<cstdio> #includ ...

  6. 单源最短路——Bellman-Ford算法

    1.Dijkstra的局限性 Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的. 列如以 ...

  7. [ACM_图论] Domino Effect (POJ1135 Dijkstra算法 SSSP 单源最短路算法 中等 模板)

    Description Did you know that you can use domino bones for other things besides playing Dominoes? Ta ...

  8. 模板C++ 03图论算法 1最短路之单源最短路(SPFA)

    3.1最短路之单源最短路(SPFA) 松弛:常听人说松弛,一直不懂,后来明白其实就是更新某点到源点最短距离. 邻接表:表示与一个点联通的所有路. 如果从一个点沿着某条路径出发,又回到了自己,而且所经过 ...

  9. 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)

    关于几个的区别和联系:http://www.cnblogs.com/zswbky/p/5432353.html d.每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个(草儿家到 ...

  10. 用scheme语言实现SPFA算法(单源最短路)

    最近自己陷入了很长时间的学习和思考之中,突然发现好久没有更新博文了,于是便想更新一篇. 这篇文章是我之前程序设计语言课作业中一段代码,用scheme语言实现单源最段路算法.当时的我,花了一整天时间,学 ...

随机推荐

  1. scanf 函数笔记

    函数声明 int scanf(const char *format, ...); 说明 <返回值> scanf ("<格式化字符串>", <参数表&g ...

  2. CenOS安装MySQL服务

    说明:本教程是CenOS安装MySQL服务. 0.    预备知识: 什么是rpm RMP 是 LINUX 下的一种软件的可执行程序,你只要安装它就可以了.这种软件安装包通常是一个RPM包(Redha ...

  3. Struts2与OGNL的联系

    1.Struts与OGNL的结合原理 (1)值栈: OGNL表达式要想运行就要准备一个OGNLContext对象,Struts2内部含有一个OGNLContext对象,名字叫做值栈. 值栈也由两部分组 ...

  4. C++内存管理笔记(一)

      C++内存分配的四个层面 : 四个层面的比较: 内存分配与释放的测试: ); //512 bytes free(p1); complex<int>* p2 = new complex& ...

  5. TortoiseSVN的安装及其简单使用

    VisualSVN-Server的安装以及简单使用 TortoiseSVN的安装及其简单使用 VisualSVN的安装及冲突的处理 安装完VisualSVN-Server后,Test仓储里边什么都没有 ...

  6. 找python爬虫小项目?github给你准备好了!

    前言 即使我们都是程序员,但我们也并非都会修电脑,都会做酷炫的ppt,都会优化系统卡顿.其实程序员也是分行业.分专业的,就像医生也分内外科.呼吸科.神经科神的. 作为非专业的python选手,或者非专 ...

  7. 视觉slam十四讲第七章课后习题6

    版权声明:本文为博主原创文章,转载请注明出处: http://www.cnblogs.com/newneul/p/8545450.html 6.在PnP优化中,将第一个相机的观测也考虑进来,程序应如何 ...

  8. [css]画圆形标签

    画圆形标签的窍门: 圆形是在padding和margin中间同时是padding的内切圆也是margin的外接圆 .circle{ width: 20px; height: 20px; display ...

  9. Codeforces_713_A

    http://codeforces.com/problemset/problem/713/A 将读入的数全都存为二进制,用map保存对应的个数. #include<iostream> #i ...

  10. C# 把带有父子关系的数据转化为------树形结构的数据 ,以及 找出父子级关系的数据中里面的根数据Id

    紧接上一篇,将List<Menu>的扁平结构数据, 转换成树形结构的数据 返回给前端   ,   废话不多说,开撸! --------------------- 步骤: 1. 建 Menu ...