EdgeWeightedGraph.java
package cn.denghanxi.s43;
import edu.princeton.cs.algs4.Bag;
import edu.princeton.cs.algs4.In;
import java.util.Iterator;
/**
* Created by dhx on 2018/5/9.
* 加权图
*/
public class EdgeWeightedGraph {
private int v; //v vertex number
private int e; //edges number
private Bag<Edge>[] adj;
public EdgeWeightedGraph(int v) {
this.v = v;
this.e = 0;
adj = (Bag<Edge>[]) new Bag[v];
for (int i = 0; i < v; i++)
adj[i] = new Bag<>();
}
public EdgeWeightedGraph(In in){
this(in.readInt());
int e = in.readInt();
for (int i = 0; i < e; i++) {
Edge edge = new Edge(in.readInt(), in.readInt(), in.readDouble());
addEdge(edge);
}
}
public int v() {
return v;
}
public int e() {
return e; // number of edges
}
public void addEdge(Edge edge) {
int v = edge.either();
int w = edge.other(v);
adj[v].add(edge);
adj[w].add(edge);
e++;
}
public Iterable<Edge> adj(int v) {
return adj[v];
}
public Iterable<Edge> edges() {
Bag<Edge> bag = new Bag<>();
for (int i = 0; i < v; i++) {
for (Edge e : adj(i))
if (e.other(i) > i) bag.add(e);
}
return bag;
}
public static EdgeWeightedGraph tinyEWG() {
return new EdgeWeightedGraph(new In(EdgeWeightedGraph.class.getResource("/tinyEWG.txt")));
}
public static void main(String[] args) {
Iterator<Edge> iterator = EdgeWeightedGraph.tinyEWG().adj(0).iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}