有向带权图, 最短路径
有向带权图
有向带权图的API和有向图的几乎一样, 不再赘述
WeightedDirectedEdge.java
/******************************************************************************
* Compilation: javac WeightedDirectedEdge.java
* Execution: java WeightedDirectedEdge
* Author: Chenghao Wang
******************************************************************************/
public class WeightedDirectedEdge implements Comparable<WeightedDirectedEdge> {
private int from;
private int to;
private double weight;
WeightedDirectedEdge() {
}
WeightedDirectedEdge(int from, int to, double weight) {
this.from = from;
this.to = to;
this.weight = weight;
}
public int from() {
return from;
}
public int to() {
return to;
}
public double weight() {
return weight;
}
@Override
public int compareTo(WeightedDirectedEdge other) {
if (weight < other.weight) return -1;
if (weight > other.weight) return +1;
return 0;
}
@Override
public String toString() {
return String.format("%d -> %d (%.2f)\n", from, to, weight);
}
}
EdgeWeightedDigraph.java
/******************************************************************************
* Compilation: javac EdgeWeightedDigraph.java
* Execution: java EdgeWeightedDigraph
* Author: Chenghao Wang
******************************************************************************/
import java.util.Scanner;
public class EdgeWeightedDigraph {
private int vertexCount;
private int edgeCount;
private Bag<WeightedDirectedEdge>[] adj;
private Bag<WeightedDirectedEdge> edges;
EdgeWeightedDigraph(</