Bellman
来源:互联网 发布:端口镜像是做什么用的 编辑:程序博客网 时间:2024/06/03 21:33
原网址点击打开链接
#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<cmath>#define MAX 1005#define inf 1<<20using namespace std;int N,M,K;//K为起点,共N个节点,M条边struct stu{ int u;//起点 int v;//终点 int cost;};int lowcost[MAX];int pre[MAX];stu edge[MAX];bool BF(){ for(int i=1; i<=N; i++) { lowcost[i]=inf; } lowcost[K]=0; bool flag=1; for(int i=2; i<=N; i++) { for(int j=1; j<=M; j++) { if(lowcost[edge[j].v]>lowcost[edge[j].u]+edge[j].cost) { lowcost[edge[j].v]=lowcost[edge[j].u]+edge[j].cost; pre[edge[j].v]=edge[j].u; } } } for(int j=1; j<=M; j++)//二次松弛,因为所存已经是最短路径,理论上无法松弛, //如果松弛成功,证明存在负环 { if(lowcost[edge[j].v]>lowcost[edge[j].u]+edge[j].cost) { flag=0; break; } } return flag;}int main(){ while(scanf("%d%d",&N,&M)!=EOF) { cin>>K; for(int i=1; i<=M; i++) { cin>>edge[i].u>>edge[i].v>>edge[i].cost; } if(BF()) {//此处我们就默认输入K为1开始输出,哈哈,偷个小懒 for(int i=2;i<=N;i++) { cout<<lowcost[i]<<endl; } } } return 0;}
最后因为是转载,这个博主应该是建立了自己的网站,很是羡慕啊,最近我也一直在思考创建一个自己的小小网站来作为一个自主分享的平台,感谢这位博主,让我对建立网站又多了一些小小的参考和想法
阅读全文
0 0
- Bellman
- Bellman
- Bellman-Ford
- bellman-ford
- Bellman()算法
- Bellman-Ford
- bellman--poj1860
- Bellman模板
- Bellman 算法
- bellman 算法
- Bellman-Ford
- Bellman-Ford
- Bellman-Ford
- bellman-ford
- bellman-ford
- bellman-ford
- Bellman-Ford
- Bellman-Ford&SPFA算法
- 语音控制AR.Drone的安卓上实现
- 在NanoPi-NEO上直接编译 LIVE555
- Ubuntu 安装 Neo4j 详细步骤
- underscore.js中如何判断两个对象的内容相同
- 搜索-H
- Bellman
- 廖雪峰Git教程读书笔记
- POJ-1979 Red and Black
- 微信支付回掉不走
- 阿里物联网套件-服务端SDK学习实践(基础篇-4查询产品类型信息)
- Mybatis之动态sql
- 342. Power of Four
- 上传本地项目 到GitHub然后显示html页面
- 组合模式