Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2014
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. import java.util.Set;
  2. import java.util.TreeSet;
  3.  
  4.  
  5. public class Test {
  6. public static void main(String[] args) {
  7. WeightedGraph graph = new WeightedGraph();
  8.  
  9. Vertex a = new Vertex("a");
  10. Vertex b = new Vertex("b");
  11. Vertex c = new Vertex("c");
  12. Vertex d = new Vertex("d");
  13. Vertex e = new Vertex("e");
  14. Vertex f = new Vertex("f");
  15.  
  16. graph.addVertex(a);
  17. graph.addVertex(b);
  18. graph.addVertex(c);
  19. graph.addVertex(d);
  20. graph.addVertex(e);
  21. graph.addVertex(f);
  22.  
  23. graph.connect(a, b, 7);
  24. graph.connect(a, c, 9);
  25. graph.connect(a, f, 14);
  26. graph.connect(b, c, 10);
  27. graph.connect(b, d, 15);
  28. graph.connect(c, d, 11);
  29. graph.connect(c, f, 2);
  30. graph.connect(d, e, 6);
  31. graph.connect(e, f, 9);
  32.  
  33.  
  34. System.out.println(graph);
  35. System.out.println(graph.getVertices());
  36. System.out.println(graph.getEdges());
  37. }
  38. }
  39.  
  40.  
  41.  
  42. class WeightedGraph {
  43. Set<Vertex> vertices = new TreeSet<Vertex>();
  44.  
  45. void addVertex(Vertex v) {
  46. vertices.add(v);
  47. }
  48.  
  49. void connect(Vertex a, Vertex b, Integer distance) {
  50. a.addEdge(new Edge(b, distance));
  51. b.addEdge(new Edge(a, distance));
  52. }
  53.  
  54. Set<Vertex> getVertices() {
  55. return vertices;
  56. }
  57.  
  58. Set<Edge> getEdges() {
  59. Set<Edge> edges = new TreeSet<Edge>();
  60. for (Vertex v : vertices) {
  61. edges.addAll(v.getEdges());
  62. }
  63. return edges;
  64. }
  65.  
  66. public String toString() {
  67. String s = "WeightedGraph {n";
  68. for (Vertex v : vertices) {
  69. s += "t" + v + "n";
  70. }
  71. s += "}";
  72. return s;
  73. }
  74. }
  75.  
  76. class Edge implements Comparable<Edge> {
  77. Vertex vertex;
  78. Integer distance;
  79.  
  80. Edge(Vertex vertex, Integer distance) {
  81. this.vertex = vertex;
  82. this.distance = distance;
  83. }
  84.  
  85. Integer getDistance() {
  86. return distance;
  87. }
  88.  
  89. Vertex getVertex() {
  90. return vertex;
  91. }
  92.  
  93. public int compareTo(Edge e) {
  94. Integer i = vertex.compareTo(e.vertex);
  95. if (i.equals(0)) {
  96. return distance.compareTo(e.distance);
  97. }
  98. return i;
  99. }
  100.  
  101. public String toString() {
  102. return "Edge(" + vertex.getId() + "," + distance + ")";
  103. }
  104. }
  105.  
  106.  
  107. class Vertex implements Comparable<Vertex> {
  108. String id;
  109. Set<Edge> edges = new TreeSet<Edge>();
  110.  
  111. Vertex(String id) {
  112. this.id = id;
  113. }
  114.  
  115. public Set<Edge> getEdges() {
  116. return edges;
  117. }
  118.  
  119. void addEdge(Edge e) {
  120. edges.add(e);
  121. }
  122.  
  123. String getId() {
  124. return id;
  125. }
  126.  
  127. public int compareTo(Vertex v) {
  128. return id.compareTo(v.id);
  129. }
  130.  
  131. public String toString() {
  132. String s = "Vertex(" + id + ") [";
  133. for (Edge e : edges) {
  134. s += "(" + e.getVertex().getId() + "," + e.getDistance() + "),";
  135. }
  136. s += "]";
  137. return s;
  138. }
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement