src/biu/Graph_UD.hh
Go to the documentation of this file.00001 #ifndef GRAPH_UD_HH_
00002 #define GRAPH_UD_HH_
00003
00004 #include <vector>
00005 #include <set>
00006 #include <string>
00007 #include <ostream>
00008
00009 namespace biu
00010 {
00011
00012
00018 class Graph_UD
00019 {
00020
00021 protected:
00022
00024 std::vector< std::set<size_t> > adjList;
00025
00026
00027 public:
00028
00029
00030 typedef std::vector<size_t> CompLabel;
00031
00034 Graph_UD(size_t nodeNumber = 0);
00035
00037 virtual ~Graph_UD();
00038
00042 void setNodeNumber(const size_t n);
00043
00045 void addEdge(const size_t n1, const size_t n2);
00046
00048 void remEdge(const size_t n1, const size_t n2);
00049
00052 bool isEdge(const size_t n1, const size_t n2);
00053
00056 size_t nodes() const;
00057
00060 size_t edges() const;
00061
00065 size_t degree(const size_t n) const;
00066
00070 size_t connectedComponents(CompLabel & compID) const;
00071
00073 void printDOT( std::ostream & out ) const;
00074
00075 protected:
00076
00084 void labelAdjacentNodes( const size_t curNode, CompLabel & compID, const size_t label) const;
00085
00086 };
00087
00088 }
00089
00090 #endif