Bellman_ford 队列优化算法-SPFA
思路: Bellman_ford 算法每次松弛都是对所有边进行松弛,但真正有效的松弛是基于已经计算过的节点做的松弛。因此优化的思路是只对上一次松弛更新过的节点作为出发节点所连接的边进行松弛就够了。所以我们需要记录上次松弛的时候更新过的节点,一般用队列来记录(栈也可以)。同时,在加入队列的过程可以有一个优化,用visited数组记录已经在队列里的元素,已经在队列的元素不用重复加入。
代码如下:
import java.util.*;
class Edge{
int from,to,val;
public Edge(int from,int to,int val){
this.from=from;
this.to=to;
this.val=val;
}
}
class Main{
public static void main (String[] args) {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt