单源最短路 Bellman-Ford算法(有向图)
// 单源最短路问题
// 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算法(有向图)的更多相关文章
- spfa 单源最短路究极算法
学习博客链接:SPFA 求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm. SPFA算法是西南交通大学段凡丁于1994年发表的. 从名字我 ...
- 2018/1/28 每日一学 单源最短路的SPFA算法以及其他三大最短路算法比较总结
刚刚AC的pj普及组第四题就是一种单源最短路. 我们知道当一个图存在负权边时像Dijkstra等算法便无法实现: 而Bellman-Ford算法的复杂度又过高O(V*E),SPFA算法便派上用场了. ...
- 单源最短路:Dijkstra算法 及 关于负权的讨论
描述: 对于图(有向无向都适用),求某一点到其他任一点的最短路径(不能有负权边). 操作: 1. 初始化: 一个节点大小的数组dist[n] 源点的距离初始化为0,与源点直接相连的初始化为其权重,其他 ...
- 单源最短路:Bellman-Ford算法 及 证明
描述: 求图中某一点到其他任一点的最短距离. 操作: 1. 初始化 结果保存在一个dist数组里,源点的结果初始化为0,其他初始化为无穷大(如INT32_MAX). 2. 计算: 两重for循环,第一 ...
- 单源最短路模板(dijkstra)
单源最短路(dijkstra算法及堆优化) 弱化版题目链接 n^2 dijkstra模板 #include<iostream> #include<cstdio> #includ ...
- 单源最短路——Bellman-Ford算法
1.Dijkstra的局限性 Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的. 列如以 ...
- [ACM_图论] Domino Effect (POJ1135 Dijkstra算法 SSSP 单源最短路算法 中等 模板)
Description Did you know that you can use domino bones for other things besides playing Dominoes? Ta ...
- 模板C++ 03图论算法 1最短路之单源最短路(SPFA)
3.1最短路之单源最短路(SPFA) 松弛:常听人说松弛,一直不懂,后来明白其实就是更新某点到源点最短距离. 邻接表:表示与一个点联通的所有路. 如果从一个点沿着某条路径出发,又回到了自己,而且所经过 ...
- 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)
关于几个的区别和联系:http://www.cnblogs.com/zswbky/p/5432353.html d.每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个(草儿家到 ...
- 用scheme语言实现SPFA算法(单源最短路)
最近自己陷入了很长时间的学习和思考之中,突然发现好久没有更新博文了,于是便想更新一篇. 这篇文章是我之前程序设计语言课作业中一段代码,用scheme语言实现单源最段路算法.当时的我,花了一整天时间,学 ...
随机推荐
- 软工造梦厂团队项目(Alpha版本发布2)
课程 (https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience) 作业要求 https://www.cnblogs.com/h ...
- MySQL5.6绿色版安装
1.下载 MySQL绿色版安装需下载好三个文件 (1).MySQL5.6版本离线安装包 (2).Microsoft Visual C++ (3).Microsoft .NET Framework 1. ...
- artTemplate--模板使用自定义函数(1)
案例 因为公司业务需要频繁调用接口,后端返回的都是json树对象,需要有些特殊的方法做大量判断和数据处理,显然目前简单语法已经不能满足业务需要了,需要自己定制一些 方法来处理业务逻辑. 例如后台返回的 ...
- <状压DP>solution-HDU5691_Sitting in Line
Sitting in Line Problem Description 度度熊是他同时代中最伟大的数学家,一切数字都要听命于他.现在,又到了度度熊和他的数字仆人们玩排排坐游戏的时候了.游戏的规则十分简 ...
- [求解!!!] springboot在运行web项目时报错
2017-05-10 17:40:54.343 INFO 4852 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing ...
- 06讲案例篇:系统的CPU使用率很高,但为啥却找不到高CPU的应用
小结 碰到常规问题无法解释的 CPU 使用率情况时,首先要想到有可能是短时应用导致的问题,比如有可能是下面这两种情况. 第一,应用里直接调用了其他二进制程序,这些程序通常运行时间比较短,通过 top ...
- 非常NB的一款快捷启动软件--Merry
Merry 被设计为了能将日常重复性操作简化为一个快捷键或者命令.Merry 采用完全开放的体系, 可以使用 Lua 或者外部程序来扩展 Merry 的功能. 另附一个自己扩展的LUA脚本: --启动 ...
- C++ STL IO流 与 Unicode (UTF-16 UTF-8) 的协同工作
09年研究技术的大神真的好多,本文测试有很多错误,更正后发布下(可能与编辑器相关). file.imbue(locale(file.getloc(), new codecvt_utf8<wcha ...
- 洛谷P3177 [HAOI2015]树上染色(树形dp)
题目描述 有一棵点数为 N 的树,树边有边权.给你一个在 0~ N 之内的正整数 K ,你要在这棵树中选择 K个点,将其染成黑色,并将其他 的N-K个点染成白色 . 将所有点染色后,你会获得黑点两两之 ...
- Android Studio MainActivity中的R为红色
csdn解决链接 https://blog.csdn.net/M283592338/article/details/79880413