@Override public double[] dijkstra(int s) { double[] wt = new double[n]; Arrays.fill(wt, Double.POSITIVE_INFINITY); PriorityQueue queue = new PriorityQueue(wt); for (int v = 0; v < n; v++) { queue.insert(v); } wt[s] = 0.0; queue.lower(s); while (!queue.empty()) { int v = queue.poll(); if (!Double.isInfinite(wt[v])) { for (Edge edge : graph[v]) { int w = edge.v2; if (!digraph && w == v) { w = edge.v1; } double p = wt[v] + edge.weight; if (p < wt[w]) { wt[w] = p; queue.lower(w); } } } } return wt; }
int v = queue.poll(); if (!Double.isInfinite(wt[v])) { for (int w = 0; w < n; w++) {