package graph; import java.util.Objects; import java.util.Vector; public class DirectedGraph extends Graph { public DirectedGraph() { super(); } public DirectedGraph(String s) { super(s); } public boolean areAdjacent(MarkedVertex n1, MarkedVertex n2) { return true; } public boolean areAdjacent(String s1, String s2) throws NameDoesNotExistException{ MarkedVertex n1 = null; MarkedVertex n2 = null; for (MarkedVertex i: this.getAllVertexes()) { if (Objects.equals(i.getName(), s1)) { n1 = i; } else if (Objects.equals(i.getName(), s2)) { n2 = i; } } if (n1 == null || n2 == null) { throw new NameDoesNotExistException("One of the Vertexes might not exist"); } else { return areAdjacent(n1, n2); } } public boolean areStrongAdjacent(MarkedVertex n1, MarkedVertex n2) { boolean n1ton2 = false; boolean n2ton1 = false; for (MarkedEdge i: this.getAllEdges()) { if (i.getSource() == n1 && i.getDestination() == n2) { n1ton2 = true; } else if (i.getSource() == n2 && i.getDestination() == n1) { n2ton1 = true; } } return (n1ton2 && n2ton1); } public boolean areStrongAdjacent(String s1, String s2) throws NameDoesNotExistException { MarkedVertex n1 = null; MarkedVertex n2 = null; for (MarkedVertex i: this.getAllVertexes()) { if (Objects.equals(i.getName(), s1)) { n1 = i; } else if (Objects.equals(i.getName(), s2)) { n2 = i; } } if (n1 == null || n2 == null) { throw new NameDoesNotExistException("One of the Vertexes might not exist"); } else { return areStrongAdjacent(n1, n2); } } public int inDegree(MarkedVertex n) { int degree = 0; for (MarkedEdge i: this.getAllEdges()) { if (i.getDestination() == n) { degree += 1; } } return degree; } public int inDegree(String s) throws NameDoesNotExistException{ for (MarkedVertex i: this.getAllVertexes()) { if (Objects.equals(i.getName(), s)) { return inDegree(i); } } throw new NameDoesNotExistException("One of the Vertexes might not exist"); } public int outDegree(MarkedVertex n) { int degree = 0; for (MarkedEdge i: this.getAllEdges()) { if (i.getSource() == n) { degree += 1; } } return degree; } public int outDegree(String s) throws NameDoesNotExistException{ for (MarkedVertex i: this.getAllVertexes()) { if (Objects.equals(i.getName(), s)) { return outDegree(i); } } throw new NameDoesNotExistException("One of the Vertexes might not exist"); } public Vector> getPredecessors(MarkedVertex n) { return null; } public Vector> getSuccessors(MarkedVertex n) { return null; } }