优先队列优化的 Dijkstra算法
来源:互联网 发布:阿里云域名修改dns 编辑:程序博客网 时间:2024/06/07 06:55
import java.util.ArrayList;import java.util.PriorityQueue;import java.util.Scanner;public class Main {PriorityQueue<dist> pq;ArrayList<Edge> []adj;int []distTo;int n, m;public static void main(String[] args) {new Main().run();}public void run() {Scanner in = new Scanner(System.in);while(in.hasNext()) {n = in.nextInt();m = in.nextInt();if(n == 0 && m == 0) {break;}distTo = new int[n+1];pq = new PriorityQueue<>();adj = new ArrayList[n+1];for(int i = 1; i <= n; i++ ) {adj[i] = new ArrayList<>();}for(int i = 0; i < m; i++ ) {int u = in.nextInt();int v = in.nextInt();int w = in.nextInt();adj[u].add(new Edge(u, v, w));adj[v].add(new Edge(v, u, w));}dijkstra();System.out.println(distTo[n]);}}public void dijkstra() {for(int i = 1; i <= n; i++ ) {distTo[i] = Integer.MAX_VALUE;}distTo[1] = 0;pq.offer(new dist(1, 0));while(!pq.isEmpty()) {int v = pq.poll().v;for(Edge e: adj[v]) {int w = e.v;if(distTo[w] > distTo[v] + e.w) {distTo[w] = distTo[v] + e.w;pq.offer(new dist(w, distTo[w]));}}}}}class Edge{int u, v, w;public Edge(int u, int v, int w) {this.u = u;this.v = v;this.w = w;}}class dist implements Comparable<dist>{//顶点v 与 与distTo[v]->wint v;int w;public dist(int v, int w) {this.v = v;this.w = w;}public int compareTo(dist o) {return w > o.w ? 1 : -1;}}
临接矩阵的Dijkstra快速写法
for(int i = 1; i <= n; i++ ) {dist[i] = map[1][i];}visit[1] = true;while(true) {int v = -1;for(int u = 1; u <= n; u++ ) {if(!visit[u] && (v == -1 || dist[u] < dist[v])) {v = u;}}if(v == -1)break;visit[v] = true;for(int w = 1; w <= n; w++ ) {if(map[v][w] < INF)dist[w] = Math.min(dist[w], dist[v]+map[v][w]);}}
阅读全文
0 0
- 优先队列优化的Dijkstra算法
- 优先队列优化的 Dijkstra算法
- 优先队列优化Dijkstra算法
- Dijkstra算法优先队列优化
- 优先队列优化Dijkstra算法
- dijkstra的优先队列优化
- PriorityQueue+Dijkstra优先队列优化的Dijkstra
- [最短路]使用优先队列优化的Dijkstra算法
- 用优先队列优化后的dijkstra算法模板
- dijkstra算法模板(优先队列优化)
- 优先队列优化 dijkstra
- Dijkstra(优先队列优化)
- Dijkstra优先队列优化
- Dijkstra算法之优先队列优化版本 By ACReaper Dijkstra
- 通过POJ 3463 Sightseeing(dijkstra)彻底理解优先队列优化的dijkstra算法
- uva10986 优先队列优化的Dijkstra
- 使用优先队列的Dijkstra算法
- 利用优先队列实现的dijkstra算法
- List<?>和List<T>的区别?
- 那些互联网IT岗位的招聘潜台词,能看到说明你是历经磨难的老司机
- SpringMVC入门笔记(一)
- 「吃鸡」游戏火爆背后,谁来给服务器降降温?
- 配电房来了个傻员工,改变了所有聪明的员工!
- 优先队列优化的 Dijkstra算法
- 改变计算机界的存储解决方案:RAID,30岁生日快乐!
- “数据中心迁移到IDC数据中心”最怕遇到这几个问题
- 标准算法整理Ι
- 安装多台tomcat配置
- 几个常见的算法
- 漫画告诉你什么是屎一样的代码(屎里蕴含着代码的秘密)
- Spring—AOP介绍
- CentOS7 常用命令集合