import java.util.*; class Vertex { String name; LinkedList edgeList ; public Vertex(String s) { name = s; edgeList = new LinkedList(); } } class Edge { Vertex origin; Vertex destination; double cost; // edge has no direction, so origin and destination are misnomers public Edge(Vertex o, Vertex d, double w) { origin = o; destination = d; cost = w; } } public class UndGraph { Hashtable h; public UndGraph() { h = new Hashtable(); } public void addVertex(String s) { Vertex v = new Vertex(s); h.put(s,v); } public void addEdge(String s1, String s2, double w) { Vertex u = h.get(s1); Vertex v = h.get(s2); if ( (u != null) && (v !=null) ) { Edge e = new Edge(u,v,w); u.edgeList.add(e); v.edgeList.add(e); } } public void printGraph() { Collection vertexList = h.values(); for(Vertex v: vertexList) { System.out.print(v.name + " :"); for(Edge e: v.edgeList) { if (e.origin == v) System.out.print(" " + e.destination.name); else System.out.print(" " + e.origin.name); } System.out.println(" "); } } /* public LinkedList mst(){} */ public static void main(String argv []) { UndGraph g = new UndGraph(); g.addVertex("A"); g.addVertex("B"); g.addVertex("C"); g.addVertex("D"); g.addVertex("E"); g.addVertex("F"); g.addVertex("G"); g.addEdge("A","B",2); g.addEdge("A","C",4); g.addEdge("A","D",1); g.addEdge("B","D",3); g.addEdge("B","E",10); g.addEdge("C","D",2); g.addEdge("C","F",5); g.addEdge("D","E",7); g.addEdge("D","F",8); g.addEdge("D","G",4); g.addEdge("E","G",6); g.addEdge("F","G",1); g.printGraph(); } }