Bellman-ford算法求解单源点最短路径初始版本
来源:互联网 发布:淘宝古董钟表 编辑:程序博客网 时间:2024/06/07 11:51
Bellman-ford算法:
可以用来求解负的权值的图
对每个边进行枚举,最多进行n-1轮循环即可找到所有的最短路径,很多时候会少于n-1轮,所以加了check,代码里面已经比较清楚啦,
import java.util.*;public class Main {static Scanner in = new Scanner(System.in);static int INF = 99999999; static int[] dis = new int[100]; static int[] bck= new int[100]; static int[] v = new int[100]; static int[] u= new int[100]; static int[] w = new int[100];static int n,m;public static void main(String[] args) {while(in.hasNext()){int check=0,flag=0; n = in.nextInt(); m = in.nextInt(); //存储每一条边的信息,起点终点权值 for (int i = 1; i <= m; i++) {u[i] = in.nextInt();v[i] = in.nextInt();w[i] = in.nextInt(); } //初始化dis数组 for (int i = 1; i <= n; i++) dis[i]=INF; //假设从1点求解最短路径 dis[1]=0; //最短路径最长路过n-1个顶点,最多扩展n-1轮 for (int k = 1; k <= n-1; k++) { check=0; bck=Arrays.copyOf(dis,dis.length);for (int i = 1; i <= m; i++) {//当前这条边,即1到v的距离小于1到u,u到v的距离,更新 if(dis[v[i]]>dis[u[i]]+w[i]) dis[v[i]]=dis[u[i]]+w[i];}//用来检查一轮之后若dis数组没有改变,说明已经完成,停止循环if(bck.equals(dis)){check=1;break;}} //如果存在负权回路,由于每次经过一次回路都会距离减小,所以dis如果经过最多n-1轮之后还会减小,说明存在负权回路 for (int i = 1; i <= m; i++) { if(dis[v[i]]>dis[u[i]]+w[i]) flag=1;} if(flag==1){ System.out.println("存在负权回路"); } else{ for (int i = 1; i <= n; i++) System.out.print(dis[i]+" ");System.out.println(); } } }}
阅读全文
0 0
- Bellman-ford算法求解单源点最短路径初始版本
- 图的最短路径算法(四)--Bellman-Ford(解决负权边)单源点最短路径
- 单源点最短路径Bellman算法实现
- Bellman-Ford算法—求解带负权边的最短路径
- Bellman-Ford求解单元最短路径
- Bellman-ford算法 实现源点最短路径 允许路径中有负权值
- dijkstra算法求解单源点最短路径
- Dijkstra求解单源点最短路径
- 最短路径算法---Bellman-Ford
- 最短路径Bellman-Ford算法
- 【算法】最短路径之Bellman-Ford
- 最短路径bellman-ford算法模板
- Bellman Ford 最短路径算法
- Bellman-Ford算法【最短路径】
- Bellman ford 最短路径算法
- BellMan-Ford算法--寻找最短路径
- 【图】最短路径Bellman-Ford算法
- 最短路径(Bellman-Ford算法)
- 本地配置多个tomcat应用
- IDEA搭建SSM框架 以及环境配置
- LargestRectangleArea
- python中对象序列化及tensorflow的命令行参数解析
- PX4飞控之添加地面站参数
- Bellman-ford算法求解单源点最短路径初始版本
- java hashcode() 与 equals()
- Android 双屏异显
- Learining TypeScript (一) TypeScript 简介
- c++实现链表的基本操作
- 10分钟让你明白MySQL是如何利用索引的
- unity audio
- CSS:float还是inline-block?
- AOP 和 OOP