package ds.graph; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; /** * Created by sherxon on 1/1/17. */ public class DirectedGraph implements Graph { private Map<Integer, Set<Integer>> vertexMap = new HashMap<>(); @Override public boolean addVertex(Integer v) { vertexMap.put(v, new HashSet<>()); return true; } @Override public Set<Integer> getVertices() { return new HashSet<>(vertexMap.keySet()); } @Override public Set<Integer> getNeighbors(Integer ver) { return vertexMap.get(ver); } @Override public Double addEdge(Integer v1, Integer v2) { if (!vertexMap.containsKey(v1)) return -1d; if (!vertexMap.containsKey(v2)) return -1d; vertexMap.get(v1).add(v2); return 0d; } @Override public boolean addEdge(Integer v1, Integer v2, Double weight) { // not supported // use weighted graph return false; } @Override public boolean removeVertex(Integer v) { return false; } @Override public boolean removeEdge(Integer v1, Integer v2) { if (!vertexMap.containsKey(v1)) return false; if (!vertexMap.containsKey(v2)) return false; vertexMap.get(v1).remove(v2); return true; } @Override public int size() { return vertexMap.size(); } }