2023.10.10每日总结
import java.util.*; public class Subway { private Map<String, List<String>> lines; // 地铁线路图 private Map<String, List<String>> stations; // 地铁站点信息 private Map<String, Map<String, Integer>> connections; // 地铁站点之间的连接信息 public Subway() { lines = new HashMap<>(); stations = new HashMap<>(); connections = new HashMap<>(); // 初始化地铁线路图、站点信息和连接信息 // 省略代码 } public List<String> shortestPath(String start, String end) { Map<String, Integer> distances = new HashMap<>(); // 记录起点到各个站点的距离 Map<String, String> previous = new HashMap<>(); // 记录每个站点的前一个站点 PriorityQueue<String> queue = new PriorityQueue<>(Comparator.comparingInt(distances::get)); // 用于存储未处理的站点 // 初始化距离和前置节点信息 for (String station : stations.keySet()) { distances.put(station, Integer.MAX_VALUE); previous.put(station, null); } distances.put(start, 0); // 将起点加入队列 queue.offer(start); while (!queue.isEmpty()) { String current = queue.poll(); if (current.equals(end)) { break; } for (String neighbor : connections.get(current).keySet()) { int distance = distances.get(current) + connections.get(current).get(neighbor); if (distance < distances.get(neighbor)) { distances.put(neighbor, distance); previous.put(neighbor, current); queue.offer(neighbor); } } } // 构建最短路径 List<String> path = new ArrayList<>(); String current = end; while (current != null) { path.add(0, current); current = previous.get(current); } return path; } }