#ifndef __GRAPH_H__ #define __GRAPH_H__ #include #include #include #include "Edge.h" #include "EdgeType.h" #include "CostModel.h" #include "Node.h" using std::string; using std::list; using std::cout; using std::endl; class Graph { public: Graph() {} Graph(const Graph& graph) { adjList = graph.adjList; } Graph(const list< list >& adj) : adjList(adj) {} void insert(const Node& node); int addEdge(const Edge&); void remEdge(const Edge&); std::ostream& print(std::ostream & out) const; list< list >& getAdjList() { return adjList; } int numberOfNodes() const { return adjList.size(); } void setAllWeights(const CostModel&); void mergeEdges(); void printWeights(ostream&) const; Edge removeLightestEdge(); Graph& operator=(const Graph&); void printEdgeCount () const; private: list< list > adjList; void computeEdgeCount (int&,int[none]) const; }; std::ostream & operator<<(std::ostream &, const Graph*) ; std::ostream & operator<<(std::ostream &, const Graph&) ; #endif