diff --git a/graph/graph.h b/graph/graph.h index f4e6ad7..ed81c23 100644 --- a/graph/graph.h +++ b/graph/graph.h @@ -12,13 +12,19 @@ class Graph { public: ~Graph(); - // Add edge between v and u - virtual void insert(const T& v, const T& u); + // Add edge e(u,v) + virtual void insert(const T& u, const T& v); - // Number of vertices + // Return true if e(u,v) exists + virtual bool contains(const T& u, const T& v); + + // Remove edge e(u,v) + virtual void remove(const T& u, const T& v); + + // Return num. of vertices virtual std::uint16_t V(); - // Number of edges + // Return num. of edges virtual std::uint16_t E(); // Output graph @@ -36,10 +42,20 @@ Graph::~Graph() { } template -inline void Graph::insert(const T& v, const T& u) { - Graph::vertices.insert(v); +inline void Graph::insert(const T& u, const T& v) { Graph::vertices.insert(u); - Graph::adjMatrix[v].insert(u); + Graph::vertices.insert(v); + Graph::adjMatrix[u].insert(v); +} + +template +bool Graph::contains(const T& u, const T& v) { + return adjMatrix[u].contains(v); +} + +template +void Graph::remove(const T& u, const T& v) { + adjMatrix[u].erase(v); } template