欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > Day59 图论part09

Day59 图论part09

2025/2/23 17:42:33 来源:https://blog.csdn.net/2401_83448199/article/details/144760496  浏览:    关键词:Day59 图论part09

今天的建议依然是,一刷的时候,能了解 原理,照着代码随想录能抄下来代码就好,就算达标。

二刷的时候自己尝试独立去写,三刷的时候 才能有一定深度理解各个最短路算法。

dijkstra(堆优化版)精讲

代码随想录

超时版:

import java.util.*;public class Main{public static void main (String[] args) {//dijkstra算法三部曲//1.找到距离源节点最近的点,且未访问//2.把该点标记为已经访问//3.更新其他点到源节点的距离Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();//构造邻接表List<List<Edge>> graph = new ArrayList<>(n+1);for(int i = 0; i <= n; i++){graph.add(new ArrayList<>());}for(int i = 0; i < m; i++){int star = scanner.nextInt();int end = scanner.nextInt();int val =  scanner.nextInt();graph.get(star).add(new Edge(star, end, val));}int[] minDist = new int[n+1];Arrays.fill(minDist, Integer.MAX_VALUE);PriorityQueue<int[]> pq = new PriorityQueue<>((a,b) -> Integer.compare(a[1], b[1]));boolean[] isVisited = new boolean[n+1];minDist[1] = 0;pq.add(new int[]{1,minDist[1]});// isVisited[1] = true;//找到距离源节点最近的点//把该点标记为已经访问//更新其他点到源节点的距离while(!pq.isEmpty()){int[] pair = pq.poll();int point = pair[0];if(isVisited[point]){continue;}isVisited[point] = true;for(Edge edge : graph.get(point)){if(!isVisited[edge.end

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词