Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Set;
- import java.util.TreeSet;
- public class Test {
- public static void main(String[] args) {
- WeightedGraph graph = new WeightedGraph();
- Vertex a = new Vertex("a");
- Vertex b = new Vertex("b");
- Vertex c = new Vertex("c");
- Vertex d = new Vertex("d");
- Vertex e = new Vertex("e");
- Vertex f = new Vertex("f");
- graph.addVertex(a);
- graph.addVertex(b);
- graph.addVertex(c);
- graph.addVertex(d);
- graph.addVertex(e);
- graph.addVertex(f);
- graph.connect(a, b, 7);
- graph.connect(a, c, 9);
- graph.connect(a, f, 14);
- graph.connect(b, c, 10);
- graph.connect(b, d, 15);
- graph.connect(c, d, 11);
- graph.connect(c, f, 2);
- graph.connect(d, e, 6);
- graph.connect(e, f, 9);
- System.out.println(graph);
- System.out.println(graph.getVertices());
- System.out.println(graph.getEdges());
- }
- }
- class WeightedGraph {
- Set<Vertex> vertices = new TreeSet<Vertex>();
- void addVertex(Vertex v) {
- vertices.add(v);
- }
- void connect(Vertex a, Vertex b, Integer distance) {
- a.addEdge(new Edge(b, distance));
- b.addEdge(new Edge(a, distance));
- }
- Set<Vertex> getVertices() {
- return vertices;
- }
- Set<Edge> getEdges() {
- Set<Edge> edges = new TreeSet<Edge>();
- for (Vertex v : vertices) {
- edges.addAll(v.getEdges());
- }
- return edges;
- }
- public String toString() {
- String s = "WeightedGraph {n";
- for (Vertex v : vertices) {
- s += "t" + v + "n";
- }
- s += "}";
- return s;
- }
- }
- class Edge implements Comparable<Edge> {
- Vertex vertex;
- Integer distance;
- Edge(Vertex vertex, Integer distance) {
- this.vertex = vertex;
- this.distance = distance;
- }
- Integer getDistance() {
- return distance;
- }
- Vertex getVertex() {
- return vertex;
- }
- public int compareTo(Edge e) {
- Integer i = vertex.compareTo(e.vertex);
- if (i.equals(0)) {
- return distance.compareTo(e.distance);
- }
- return i;
- }
- public String toString() {
- return "Edge(" + vertex.getId() + "," + distance + ")";
- }
- }
- class Vertex implements Comparable<Vertex> {
- String id;
- Set<Edge> edges = new TreeSet<Edge>();
- Vertex(String id) {
- this.id = id;
- }
- public Set<Edge> getEdges() {
- return edges;
- }
- void addEdge(Edge e) {
- edges.add(e);
- }
- String getId() {
- return id;
- }
- public int compareTo(Vertex v) {
- return id.compareTo(v.id);
- }
- public String toString() {
- String s = "Vertex(" + id + ") [";
- for (Edge e : edges) {
- s += "(" + e.getVertex().getId() + "," + e.getDistance() + "),";
- }
- s += "]";
- return s;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement