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. 多次页面跳转后pop回主界面的问题

    最近写代码的时候出了点BUG, 查阅资料后终于解决了. 问题原因大概是: 项目中所有的viewController都是继承自一个封装好的viewController. navigationbar, n ...

  2. Luogu P1092 虫食算【搜索/剪枝】 By cellur925

    题目传送门 这道题是一道经久不衰的搜索题目,但是开始做的时候我没什么思路==.初始值-1 输出格式 \(naive\)想法 从右往左依次尝试填充数字,把算式当做一个3行\(n\)列的网格.(什么?你问 ...

  3. Execution failed for task ':app:installDebug'.

    解决方案:重新起服务(react-native start),重新起项目(react-native run-android)

  4. [NOIP2014]无线网站发射器选址

    Description 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网.假设该城市的布局为由严格平行的129条东西向街道和129条南北向街道所形成的网格状, ...

  5. python操作json来存储简单的数据,pickle来操作复杂的数据

    json作为不同语言间进行数据交互的媒介,在当下已经渐渐取代了之前的xml,看一波python操作json # coding = ascii import json import pickle imp ...

  6. Codeforces 1142A(性质、暴举)

    队友和大佬都什么几种情况啥的……我是把终点都插了,起点随便选一个,暴举答案莽A. ; ll n, k, a, b, aa, minn = INF, maxx = -; set<ll> bb ...

  7. 模拟ssh、黏包、hashlib模块(MD5)

    待补充..... 一.模拟ssh 二.黏包 1.黏包现象 让我们基于tcp先制作一个远程执行命令的程序(命令ls -l ; lllllll ; pwd) res=subprocess.Popen(cm ...

  8. python入门之运算符

    计算运算符 + 加 - 减 * 乘 / 除 % 取模,返回余数 ** 幂 // 取整除,返回商的整数部分 比较运算符 == 比较是否相等 != 比较是否不等于 <> 比较是否不等于 > ...

  9. 转 造成ORA-01843 无效的月份的一些原因

  10. SSAS中处理时经常出现的几种错误

    1.[重复属性键的错误]"处理时找到重复的属性键"   当在[属性关系]里指定属性关系后,   就出出现此错误,因为不知道Month值“1”,并不知道是属于哪一年的,   所以需要 ...