Untitled
unknown
java
2 years ago
1.8 kB
4
Indexable
ArrayList<HashMap<Integer, Integer>> arrayList = new ArrayList<>(); for(int i = 0; i < n; i++) { arrayList.add(i, new HashMap<>()); } for (Edge edge : edges) { int edgeFrom = edge.from; int vertex = edge.to; int edgeWeight = edge.weight; arrayList.get(edgeFrom).put(vertex, edgeWeight); } ArrayList<Integer> mst = new ArrayList<>(); PriorityQueue<Integer> queue = new PriorityQueue<>(); int[] key = new int[n]; key[0] = 0; for (int i = 1; i <= n; i++) { key[i] = Integer.MAX_VALUE; } key[s] = 0; boolean[] visited = new boolean[n]; for(int j = 0; j < visited.length; j++) { visited[j] = false; } while (!queue.isEmpty()) { int node = queue.remove(); HashMap<Integer, Integer> currEntry = arrayList.get(node); if (node == t) { return key[t]; } if (visited[node] == false) { visited[node] = true; for (Map.Entry<Integer, Integer> neighbour : currEntry.entrySet()) { int to = neighbour.getKey(); int weight = neighbour.getValue(); if(visited[to] == false && (weight < key[to])) { key[to] = weight + key[node] + 1; queue.add(to); } } } } return -1;
Editor is loading...