public static <T extends Node> void buildDistanceMap( Collection<T> nodes, Node focus ) { for (T node : nodes) { node.distance( Integer.MAX_VALUE ); } LinkedList<Node> queue = new LinkedList<Node>(); focus.distance( 0 ); queue.add( focus ); while (!queue.isEmpty()) { Node node = queue.poll(); int distance = node.distance(); int price = node.price(); for (Node edge : node.edges()) { if (edge.distance() > distance + price) { queue.add( edge ); edge.distance( distance + price ); } } } }
public static <T extends Node> void buildDistanceMap( Collection<T> nodes, Node focus ) { for (T node : nodes) { node.distance( Integer.MAX_VALUE ); } LinkedList<Node> queue = new LinkedList<Node>(); focus.distance( 0 ); queue.add( focus ); while (!queue.isEmpty()) { Node node = queue.poll(); int distance = node.distance(); int price = node.price(); for (Node edge : node.edges()) { if (edge.distance() > distance + price) { queue.add( edge ); edge.distance( distance + price ); } } } }
public static <T extends Node> void buildDistanceMap( Collection<T> nodes, Node focus ) { for (T node : nodes) { node.distance( Integer.MAX_VALUE ); } LinkedList<Node> queue = new LinkedList<Node>(); focus.distance( 0 ); queue.add( focus ); while (!queue.isEmpty()) { Node node = queue.poll(); int distance = node.distance(); int price = node.price(); for (Node edge : node.edges()) { if (edge.distance() > distance + price) { queue.add( edge ); edge.distance( distance + price ); } } } }
T next = null; Collection<? extends Node> edges = room.edges();
T next = null; Collection<? extends Node> edges = room.edges();
T next = null; Collection<? extends Node> edges = room.edges();