previous | start | next

AcyclicSP

Find the shortest path in an edge weighted DAG (no cycles), but allow negative weights.

public AcyclicSP(EdgeWeightedDigraph G, int s) {
  distTo = new double[G.V()];
  edgeTo = new DirectedEdge[G.V()];
  for (int v = 0; v < G.V(); v++)
    distTo[v] = Double.POSITIVE_INFINITY;
  distTo[s] = 0.0;

  // visit vertices in toplogical order
  Topological topological = new Topological(G);
  for (int v : topological.order()) {
    for (DirectedEdge e : G.adj(v))
      relax(e);
  }
}


previous | start | next