赚钱啦(单源最短路径(含有负权)Bellman_Forld()算法)
来源:互联网 发布:谷歌输入法 mac 编辑:程序博客网 时间:2024/06/05 03:04
题目连接:http://59.69.128.200/JudgeOnline/problem.php?pid=183
题意:一个商人在从一个城市到另一个城市之间要花一定的费用,同时也能赚钱(赚的可能比花的多),问他从第一个城市到最后一个城市间最多能赚多少钱,如果不赚钱的花输出最少亏损多少。如何能无限赚钱的花输入“¥¥¥”;
解题思路:此题是最短路的变形。首先会想到Dijkstra()来求最短路,由于会出现负权(会出现环),因此得用Bellman_Forld(),如果出现环即跳出循环;
Dijkstra()在求单源最短路径是图中不能出现负权。而Bellma_Forld能处理含有负权的图
#include<iostream>#include<algorithm>#include<cstring>using namespace std;struct A{int a,b,c;}ch[10010];void Bellman_Forld(int m,int k){int s[1003];int flat=0;for(int i=0;i<m;i++){s[i]=1000000;}s[0]=0;for(int i=0;i<=m;i++){flat=0;for(int j=0;j<k;j++){if(s[ch[j].b]>s[ch[j].a]+ch[j].c){s[ch[j].b]=s[ch[j].a]+ch[j].c;flat=1;}}if(!flat)break;}if(flat)cout<<"${1}quot;<<endl;else cout<<-s[m-1]<<endl;}int main(){int N;cin>>N;while(N--){int m,n;cin>>m>>n;int k=0;for(int i=0;i<n;i++){int x,y,c,u,v;cin>>x>>y>>c>>u>>v;ch[k].a=x;ch[k].b=y;ch[k].c=c-u;k++;ch[k].a=y;ch[k].b=x;ch[k].c=c-v;k++;}Bellman_Forld(m,k);}}
- 赚钱啦(单源最短路径(含有负权)Bellman_Forld()算法)
- 含有负边的图的最短路径(Bellman_ford算法)
- [图论]Bellman-Ford算法求解最短路径问题(含有负权重)
- 最短路径基本介绍(3)--Bellman-Ford算法(单源最短路径算法,可求负权)
- 图--单源最短路径 -Bellman Ford 算法(可以存在负权边的情况和负权回路)算法导论p362
- 【算法】Bellman-Ford算法(单源最短路径问题)(判断负圈)
- 图算法 单源最短路径 Bellman_Ford算法(边权值为负情况)
- 算法8-11:最短路径算法之负权
- NYOJ---赚钱啦---Bellman--ford算法模版
- Bellman-Ford算法(求最短路径,并检测负权回路)
- 我赚钱啦 赚钱啦!
- spfa算法(适用于存在负权)
- 具有负边的图最短路径算法
- 可以处理负权的单源最短路径的SPFA算法带图详解(自己画的图)
- 可以处理负权的单源最短路径的SPFA算法带图详解(自己画的图)
- Bellman-Ford算法之计算含有负权值的图(但是不含权值为负的回路) By ACReaper
- 图的最短路径 Ford算法 解决负权问题
- Bellman—Ford算法实现(解决存在负边情况下单源最短路径问题)
- 如何在MyEclipse中显示行数
- android OpenGLES开发第一课 绘制简单的Polygon
- android OpenGLES开发第二课 为Polygon添加颜色
- android OpenGLES开发第三课 绘制一个可以翻转的Polygon
- android OpenGLES开发第四课 绘制一个六棱柱
- 赚钱啦(单源最短路径(含有负权)Bellman_Forld()算法)
- ACMSTEP 2.3.1 A+B Problem II //大数加法
- android OpenGLES开发 第五课 纹理映射
- the first time use the header of zlib.h
- iphone国际化(转)
- 探索C++的秘密之详解extern "C"
- poj Cow Exhibition 01背包的灵活运用
- 程序员面试宝典笔记3--循环递归概率
- hdu 3943 K-th Nya Number