Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public int recursion(List<Integer> currentNodes, int end) {
- List<Integer> nextNodes = new ArrayList<>();
- for (int current : currentNodes) {
- List<int[]> connectingNodes = connections.get(current - 1);
- Iterator<int[]> iter = connectingNodes.iterator();
- while (iter.hasNext() && cont) {
- int[] connectingNode = iter.next();
- int number = connectingNode[0];
- int length = connectingNode[1] + distanceTo.get(current) + connectingNodes.size();
- if (!distanceTo.containsKey(number)
- || distanceTo.get(number) > length) {
- distanceTo.put(number, length);
- nextNodes.add(number);
- }
- }
- }
- if (getMinDistance(nextNodes) > distanceTo.get(end)
- || currentNodes.isEmpty()) {
- if (distanceTo.get(end) == max) return -1;
- return distanceTo.get(end);
- }
- return recursion(nextNodes, end);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement