HDU-2544-最短路(Bellman-Ford)
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)的更多相关文章
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU - 2544最短路 (dijkstra算法)
HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...
- hdu 2544 最短路
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shi ...
- HDU 2544最短路 (迪杰斯特拉算法)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Time Limit: 5000/1000 MS (Java/Others) Me ...
- (重刷)HDU 1874 畅通工程续 + HDU 2544 最短路 最短路水题,dijkstra解法。
floyd解法 今天初看dijkstra,先拿这两题练手,其他变形题还是不是很懂. 模版题,纯练打字... HDU 1874: #include <cstdio> #define MAXN ...
- hdu 2544 最短路 Dijkstra
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目分析:比较简单的最短路算法应用.题目告知起点与终点的位置,以及各路口之间路径到达所需的时间, ...
- HDU 2544最短路 【dijkstra 链式前向星+优先队列优化】
最开始学最短路的时候只会用map二维数组存图,那个时候还不知道这就是矩阵存图,也不懂得效率怎么样 经过几个月的历练再回头看最短路的题, 发现图可以用链式前向星来存, 链式前向星的效率是比较高的.对于查 ...
- hdu 2544 最短路(两点间最短路径)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2544 方法一:dijkstra算法,求两点之间最短路径. /*********************** ...
- HDU 2544 最短路(floyd+bellman-ford+spfa+dijkstra队列优化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目大意:找点1到点n的最短路(无向图) 练一下最短路... dijkstra+队列优化: #i ...
随机推荐
- Sublime Text 报“Pylinter could not automatically determined the path to lint.py
Pylinter could not automatically determined the path to lint.py. please provide one in the settings ...
- PostgreSQL - 怎么转换数据类型
前言 对于select 233;这个sql,得到的结果是int4类型,如果我们希望将结果转换成其他的数据类型,有以下方法(下边的{数据类型}表示占位符,要替换成数据库中的某一种数据类型): 方法一:使 ...
- python tickle模块与json模块
#! /usr/bin/env python# -*- coding:utf-8 -*-#JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式 ...
- python入门之迭代器
迭代器 已知,可以直接作用于for循环的数据类型有: 一类是集合数据类型,如list.tuple.dict.set.str 一类是generator,包括生成器和带yield的generator fu ...
- how browser handler file:/// link
1. why browser can only open .txt file directly, pop up open or save dialog for others? 2. html cann ...
- gdb手册
摘自:https://github.com/hellogcc/100-gdb-tips/blob/master/src/quit-gdb-silently.md. 我只是摘抄我平时没注意到的,或者我认 ...
- HTML 5的革新——语义化标签(一)HTML 5的革新——语义化标签(二)
HTML 5的革新之一:语义化标签一节元素标签. 在HTML 5出来之前,我们用div来表示页面章节,但是这些div都没有实际意义.(即使我们用css样式的id和class形容这块内容的意义).这些标 ...
- 屏幕旋转时 Activity 的生命周期 —— 测试与结论
关于 Android 手机横竖屏切换时 Activity 的生命周期问题,网上有很多相似的文章,大多数都是说明在竖屏切换横屏时 Activity 会重启一次,而在横屏切换竖屏时 Activity 会重 ...
- uvm_reg_field——寄存器模型(二)
uvm_reg_field是最基本寄存器单元. typedef class uvm_reg_cbs; //----------------------------------------------- ...
- 基于eclipse搭建android开发环境-win7 32bit
基于eclipse搭建android开发环境-win7 32bit 前言:在使用朋友已搭建的Android开发环境时,发现朋友的开发环境版本较低且在update SDk时失败,便决定根据网上文章提示从 ...