import java.util.ArrayList;
import java.util.HashMap;
public class grph {
private class Vertex{
HashMap<String,Integer> nbrs = new HashMap<>();
}
HashMap<String, Vertex> vtec;
public grph() {
vtec = new HashMap<>();
}
public int numVertex() {
return this.vtec.size();
}
public void addVertex(String vname) {
Vertex vtx = new Vertex();
vtec.put(vname, vtx);
}
public void removeVertex(String vname) {
Vertex vtx = vtec.get(vname);
ArrayList<String> keys = new ArrayList<>(vtx.nbrs.keySet());
for(String key:keys) {
Vertex nbrVtx = vtec.get(key);
nbrVtx.nbrs.remove(vname);
}
vtec.remove(vname);
}
public boolean containsVertex(String vname) {
return this.vtec.containsKey(vname);
}
public int numEdges() {
int count = 0;
ArrayList<String> keys = new ArrayList<>(vtec.keySet());
for(String key:keys) {
Vertex vtx = vtec.get(key);
count = count + vtx.nbrs.size();
}
return count/2;
}
public boolean containsEdge(String vname1, String vname2) {
Vertex vtx1 = vtec.get(vname1);
Vertex vtx2 = vtec.get(vname2);
if(vtx1==null ||vtx2 == null || !vtx1.nbrs.containsKey(vname2)) {
return false;
}
return true;
}
public void addEdge(String vname1, String vname2, int cost) {
Vertex vtx1 = vtec.get(vname1);
Vertex vtx2 = vtec.get(vname2);
if(vtx1==null ||vtx2 == null || !vtx1.nbrs.containsKey(vname2)) {
return;
}
vtx1.nbrs.put(vname2, cost);
vtx2.nbrs.put(vname1, cost);
}
public void removeEdge(String vname1, String vname2, int cost) {
Vertex vtx1 = vtec.get(vname1);
Vertex vtx2 = vtec.get(vname2);
if(vtx1==null ||vtx2 == null || !vtx1.nbrs.containsKey(vname2)) {
return;
}
vtx1.nbrs.remove(vname2);
vtx2.nbrs.remove(vname1);
}
public void display() {
ArrayList<String> keys = new ArrayList<>(vtec.keySet());
for(String key: keys) {
Vertex vtx = vtec.get(key);
System.out.println(key+ " : "+ vtx.nbrs);
}
}
public static void main(String[] args){
grph g = new grph();
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", "D", 3);
g.addEdge("B", "C", 1);
g.addEdge("C", "D", 8);
g.addEdge("D", "E", 10);
g.addEdge("E", "F", 45);
g.addEdge("E", "G", 7);
g.addEdge("F", "G", 8);
g.display();
}
}
On running the display function, I am getting the wrong output for the function. It is coming out to be as follows:
A : {}
B : {}
C : {}
D : {}
E : {}
F : {}
G : {}