首页 > 代码库 > Bellman算法
Bellman算法
#include<stdio.h>#include<iostream>#define maxn 1000#define inf 0x3fffffffusing namespace std;struct Edage{ int from; int to; int cost;}es[maxn];int d[maxn];int v,e;//无负圈,求单源最短路/*单源最短路:从一个点s到其他点的最短距离*/void shortest_path(int s){ for(int i=0;i<v;i++) d[i]=inf; d[s]=0; bool update=false; while(true) { update=false; for(int i=0;i<e;i++) { Edage edage=es[i]; if(d[edage.from]!=inf&&d[edage.from]+cost<d[edage.to]) { d[edage.to]=d[edage.from]+cost; update=true; } } if(!update) break; }}//判断是否有负圈bool find_negative_loop(){ memset(d,0,sizeof(d)); for(int i=0;i<v;i++) { for(int j=0;j<e;j++) { Edage edage=es[j]; if(d[edage.from]!=inf&&d[edage.from]+edage.cost<d[edage.to]) { d[edage.to]=d[edage.from]+edage.cost; if(i==v-1) return true; } } } return false;}
Bellman算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。