#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); // Adjacency matrix representation std::set vertices; std::map> adjMatrix; }; template void Graph::insert(const T& v) { vertices.insert(v); } template void Graph::insert(const T& v, const T& u) { vertices.insert(v); vertices.insert(u); adjMatrix[v].insert(u); } } // namespace graph #endif