特点:
1、线性时间内解决单点最短路径问题
2、能够处理负权边问题
3、能够找出最长路径
不足:因为是基于拓扑排序的,所以不能解决带环的问题
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
import Graph.HasCycle;
public class TopDij {
static boolean[]visit;
static boolean[]onStack;
static Stack<Integer> stack;
static int n, m;
static boolean hasCycle = false;
static int[]dis;
static int INF = 99999999;
static ArrayList<EdgeS> []adj;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
n = in.nextInt();
m = in.nextInt();
visit = new boolean[n+1];
adj = new ArrayList[n+1];
stack = new Stack<>();
dis = new int[n+1];
onStack = new boolean[n+1];
for(int i = 1; i <= n; i++ ) {
adj[i] = new ArrayList<>();
}
for(int i = 0; i < m; i++ ) {
in