// Copyright 2003, Trustees of Indiana University // Please see the license in the file ../LICENSE // dijkstra_shortest_paths algorithm from BFS import java.lang.*; public class dijkstra_shortest_paths { public static < Vertex, Edge extends GraphEdge, VertexIterator extends java.util.Iterator, OutEdgeIterator extends java.util.Iterator, WeightMap extends ReadablePropertyMap, DistanceMap extends ReadWritePropertyMap, Distance, PredecessorMap extends ReadWritePropertyMap, DistanceCombine extends BinaryFunction, DistanceCompare extends StrictWeakOrdering> void dijkstra_shortest_paths(VertexListAndIncidenceGraph g, Vertex s, PredecessorMap predecessor, DistanceMap distance, WeightMap weight, DistanceCompare compare, DistanceCombine combine, Distance inf, Distance zero) { for(VertexIterator u_iter = g.vertices(); u_iter.hasNext(); ) { Vertex u = u_iter.next(); distance.set(u, inf); predecessor.set(u, u); } distance.set(s, zero); indirect_cmp icmp = new indirect_cmp(distance, compare); mutable_queue> Q = new mutable_queue>(icmp); dijkstra_visitor, mutable_queue>, WeightMap, PredecessorMap, DistanceMap, DistanceCombine, DistanceCompare, Vertex, Edge, Distance> vis = new dijkstra_visitor, mutable_queue>, WeightMap, PredecessorMap, DistanceMap, DistanceCombine, DistanceCompare, Vertex, Edge, Distance>(Q, weight, predecessor, distance, combine, compare, zero); hash_property_map color = new hash_property_map(); // Initialize color map for (VertexIterator i = g.vertices(); i.hasNext();) { Vertex v = i.next(); color.set(v, ColorValue.white()); } graph_search.graph_search( g, s, vis, color, Q); } }