java模板系列之dikstra

阅读: 评论:0

java模板系列之dikstra

java模板系列之dikstra

HDU - 2544

没有什么太多好说的,优先队列优化的dikstra,时间复杂度可近似看为mlogn,m为边,n为点

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//import java.util.*;public class Main {//既代表了list中的边权和终点,也代表了优先队列中的点和到达该点的最小权值static class v implements Comparable<v>{int to;int val;public v(int to, int val) { = to;this.val = val;}@Overridepublic int compareTo(v o) {return this.val - o.val;}}static void dikstra(){PriorityQueue<v> q = new PriorityQueue<v>();Arrays.fill(v,false);Arrays.fill(d,1000000009);d[1] = 0;q.add(new v(1,0));while(q.size() > 0){v x = q.poll();//System.out.+" "+x.val+"a");if(] == true) continue;] = true;for(int i=0;i<].size();i++){int newto = ].get(i).to;int newval = ].get(i).val;if(]+newval<d[newto]){d[newto] = ]+newval;q.add(new v(newto,d[newto]));}}}}static int d[];static boolean v[];static int n,m,s;static List<v> l[];public static void main(String[] args) {Scanner input = new Scanner(System.in);while(input.hasNextInt()) {n = Int();m = Int();//s = Int();if(n==0&&m==0) break;d = new int[n + 1];v = new boolean[n + 1];l = new List[n + 1];for (int i = 1; i <= n; i++) {l[i] = new ArrayList<v>();}for (int i = 0; i < m; i++) {int now, to, val;now = Int();to = Int();val = Int();l[now].add(new v(to, val));l[to].add(new v(now, val));}dikstra();System.out.println(d[n]);}}}

本文发布于:2024-02-01 18:53:25,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170678480938735.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模板   系列之   java   dikstra
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23