Dijkstra算法 用于在非负加权图中查找最短路径 代码如下:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Stack;
public class Didala {
private static String start = "";
private static String end = "";
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<String, Integer> cost = new HashMap();
HashMap<String, String> parents = new HashMap();
HashMap<String, HashMap<String, Integer>> graph = new HashMap();
ArrayList<String> flag = new ArrayList();
initGrpah(cost, parents, graph);
printGraph(cost, parents, graph);
didala(flag, cost, parents, graph);
printGraph(cost, parents, graph);
getFinalRoute(cost, parents, graph);
}
public static void initGrpah(HashMap<String, Integer> cost, HashMap<String, String> parents,
HashMap<String, HashMap<String, Integer>> graph) {
//初始化散列表
System.out.println("输入节点");
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String str = scanner.next();
if (str.equals("#"))
break;
graph.put(str, new HashMap<String, Integer>());
}
System.out.println("输入边的权值 起点]终点]长度如 A]B]10 #结束");
while (scanner.hasNext()) {
String str