Bellman-Ford算法是一个时间复杂度很高,但是它可以用来判断负环



负环就是上面的图,那个环的整体值小于零了,所以就是负环。

我们用Bellman-Ford算法进行更新,打一个表出来:

k a b c s

0

0 1

0 1 -2 2

0 1 -2 -1 2

0 0 -2 -1 1

这时候,我们已经跑完更新的块了,然后我们运行检查的块,当我们检查到B点的时候,发现d[A]+AB<d[B],所以d[B]就一直在减小,所以上面的更新是无效的。

因为我们跑更新的时候最多跑n-1步就可以了,n是顶点数,所以我们再次更新,不可能更新出新的结果来,所以就含有负环,所以直接return。

这题是个板子题,写个Bellman-Ford试试手,其中注释掉的代码块也是可以用的。

#include <iostream>
#include <cstring>
using namespace std;
const int INF = 0x3f3f3f3f;
int n, m, s, e, t;
int d[110]; struct Edge {
int from, to, cost;
}es[10005]; // void Bellman_Ford()
// {
// memset(d, INF, sizeof(d));
// d[1] = 0;
// while (true) {
// bool update=false;
// for (int j = 1; j <= m;j++) {
// Edge e = es[j];
// if (d[e.from]!=INF&&d[e.to]>d[e.from]+e.cost) {
// d[e.to] = d[e.from] + e.cost;
// update = true;
// }
// if (d[e.to]!=INF&&d[e.from]>d[e.to]+e.cost) {
// d[e.from] = d[e.to] + e.cost;
// update = true;
// }
// }
// if (!update)
// break;
// }
// } void Bellman_Ford()
{
memset(d, INF, sizeof(d));
d[1] = 0;
for (int i = 1; i < n;i++) {
for (int j = 1; j <= m;j++) {
Edge e = es[j];
if (d[e.from]!=INF&&d[e.to]>d[e.from]+e.cost) {
d[e.to] = d[e.from] + e.cost;
}
if (d[e.to]!=INF&&d[e.from]>d[e.to]+e.cost) {
d[e.from] = d[e.to] + e.cost;
}
}
}
} int main()
{
ios::sync_with_stdio(false);
while (cin>>n>>m&&n+m) {
for (int i = 1; i <= m;i++) {
cin >> es[i].from >> es[i].to >> es[i].cost;
}
Bellman_Ford();
cout << d[n] << endl;
}
}

HDU-2544-最短路(Bellman-Ford)的更多相关文章

  1. ACM: HDU 2544 最短路-Dijkstra算法

    HDU 2544最短路 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descrip ...

  2. UESTC 30 &&HDU 2544最短路【Floyd求解裸题】

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  3. HDU - 2544最短路 (dijkstra算法)

    HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...

  4. hdu 2544 最短路

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shi ...

  5. HDU 2544最短路 (迪杰斯特拉算法)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Time Limit: 5000/1000 MS (Java/Others)    Me ...

  6. (重刷)HDU 1874 畅通工程续 + HDU 2544 最短路 最短路水题,dijkstra解法。

    floyd解法 今天初看dijkstra,先拿这两题练手,其他变形题还是不是很懂. 模版题,纯练打字... HDU 1874: #include <cstdio> #define MAXN ...

  7. hdu 2544 最短路 Dijkstra

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目分析:比较简单的最短路算法应用.题目告知起点与终点的位置,以及各路口之间路径到达所需的时间, ...

  8. HDU 2544最短路 【dijkstra 链式前向星+优先队列优化】

    最开始学最短路的时候只会用map二维数组存图,那个时候还不知道这就是矩阵存图,也不懂得效率怎么样 经过几个月的历练再回头看最短路的题, 发现图可以用链式前向星来存, 链式前向星的效率是比较高的.对于查 ...

  9. hdu 2544 最短路(两点间最短路径)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2544 方法一:dijkstra算法,求两点之间最短路径. /*********************** ...

  10. HDU 2544 最短路(floyd+bellman-ford+spfa+dijkstra队列优化)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目大意:找点1到点n的最短路(无向图) 练一下最短路... dijkstra+队列优化: #i ...

随机推荐

  1. Java EE规范下载

  2. python 的sorted函数

    sorted函数:sorted(iterable,key,reverse) 其中iterable表示可以迭代的对象,  key是一个函数,用来选取参与比较的元素,reverse则是用来指定排序是倒序还 ...

  3. max函数的用法

    题目是   给你一段全英文本,求这段文本中出现次数最多的字母 import string def checkio(text): text = text.lower() return max(strin ...

  4. spring+mybits 整合所需jar包的下载路径(亲测有效)

    1.spring jar包:http://repo.springsource.org/libs-release-local/org/springframework/spring/5.0.0.RELEA ...

  5. docker镜像与容器

    目录 docker镜像与容器 概述 分层存储 镜像与容器 删除镜像与容器 将容器中的改动提交到镜像 慎用 docker commit--构建镜像推荐使用dockerfile docker镜像与容器 概 ...

  6. 响应式Spring Cloud初探

    响应式Spring Cloud初探 分类:工程原文链接:The Road to Reactive Spring Cloud作者:  JOSH LONG译者: helloworldtang日期:JUNE ...

  7. Semi-prime H-numbers

    题目描述形如4n+1的数被称为“H数”,乘法在“H数”集合内为封闭的.因数只有1和本身的数叫“H素数”(不包括1),其余叫“H合数”.一个“H合成数”能且只能分解为两个“H素数”.求0·h内的“H合成 ...

  8. 前端生成全球唯一码GUID

    function GUID() { this.date = new Date();  //先new一个时间备用 GUID.prototype.newGUID = function () { this. ...

  9. 定时任务-Timer

    Timer类的全限定名 java.util.Timer java.util.Timer类的构造函数 public Timer(); public Timer(boolean isDaemon); pu ...

  10. kafka系列一:单节点伪分布式集群搭建

    Kafka集群搭建分为单节点的伪分布式集群和多节点的分布式集群两种,首先来看一下单节点伪分布式集群安装.单节点伪分布式集群是指集群由一台ZooKeeper服务器和一台Kafka broker服务器组成 ...