#ifndef GRAPH_H_ #define GRAPH_H_ #include #include #include #include #include namespace graph { template class Graph { public: Graph() = default; // Add vertex v void insert(const T& v); // Add edge between v and u void insert(const T& v, const T& u); // Delete vertex v void erase(T& v); // Delete edge between v and u void erase(T& v, T& u); // Adjacency matrix representation std::set vertices; std::map> adjMatrix; }; template inline void Graph::insert(const T& v) { vertices.insert(v); } template inline void Graph::insert(const T& v, const T& u) { vertices.insert(v); vertices.insert(u); adjMatrix[v].push_back(u); } template inline void Graph::erase(T& v) { // } template inline void Graph::erase(T& v, T& u) { // } } // namespace graph #endif