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. Mol Cell Proteomics. |王欣然| 基于微粒的蛋白聚合物捕获技术让能满足多种不同需求的蛋白质组学样品制备方法成为可能

    大家好,本周分享的是发表在Molecular & Cellular Proteomics. 上的一篇关于蛋白质组学样本质谱分析前处理方法改进的文章,题目是Protein aggregation ...

  2. ubuntu 14 安装XML::Simple 模块

    最近需要用到perl 来解析xml 文件,从网上搜索了一下,大部分都建议使用XML::Simple 模块来解析,这里记录一下安装过程 方法一: 直接使用CPAN 来安装模块 $ perl -MCPAN ...

  3. Linux权限相关

    权限分组 用户:文件所有者 用户组:多个用户的集合 其他:除了用户和用户组之外的任何用户 权限类别 r:表示读的权限 w:表示写的权限 x:表示执行的权限 s:表示setuid权限,允许用户以其拥有者 ...

  4. 消息队列介绍、RabbitMQ&Redis的重点介绍与简单应用

    消息队列介绍.RabbitMQ&Redis的重点介绍与简单应用 消息队列介绍.RabbitMQ.Redis 一.什么是消息队列 这个概念我们百度Google能查到一大堆文章,所以我就通俗的讲下 ...

  5. 17 文件和网络I/O

    1       文件和网络I/O 1.1  文件处理 groovy向java所提供的File 类,新增了几个方便的方法.分别是:eachLine和.text. package file class F ...

  6. “玲珑杯”ACM比赛 Round #4 E -- array DP

    http://www.ifrog.cc/acm/problem/1050?contest=1006&no=4 DP[val]表示以val这个值结尾的等差数列有多少个 DP[val] += DP ...

  7. python学习day11

    目录 SqlAlchemy 外键 SqlAlechemy SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象 ...

  8. 牛客网Java刷题知识点之方法覆盖(方法重写)和方法重载的区别

    不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=6 ...

  9. javaScript中的严格模式 (译)

    “use strict”状态指示浏览器使用严格模式,是javaScript中一个相对少且安全的特征集. 特征列表(非完全列举) 不允许定义全局变量.(捕获没有用var声明的变量和变量名的拼写错误) 在 ...

  10. drupal中文安装指导

    (注:drupal6中文包放在profiles/default/translations下,drupal7放在profiles/standard/translations下) Drupal 6 中文安 ...