PriorityQueue<State> que = new PriorityQueue<State>(); que.add(new State(0, vertexes.length - 1)); while (!que.isEmpty()) State p = que.poll(); if (d[p.vertex] < p.cost) continue; for (EdgeFrom edgeFrom : edgesTo[p.vertex]) que.add(new State(d[edgeFrom.from], edgeFrom...