13 : _edges(0), _vertices(), _maxvert(-1)
15 ifstream fin(file_name);
16 if ( fin.is_open() ) {
19 while ( fin >> k >> l) _edges.push_back({k,l});
22 cout <<
" Error handling \n";
23 if ( fin.bad() )
throw runtime_error(
"Schwerer Fehler in istr");
25 cout <<
" Failed in reading all data.\n";
29 _edges.shrink_to_fit();
32 cout <<
"\nFile " << file_name <<
" has not been found.\n\n" ;
33 assert( fin.is_open() &&
"File not found." );
36 DetermineNumberVertices();
48 vector<vector<unsigned int>> n2n(nnode);
49 for (
size_t k=0; k<_edges.size(); ++k)
51 const int v0 = _edges[k][0];
52 const int v1 = _edges[k][1];
53 n2n.at(v0).push_back(v1);
54 n2n.at(v1).push_back(v0);
57 for (
size_t k=0; k<n2n.size(); ++k)
59 sort(n2n[k].begin(),n2n[k].end());
66 void graph::DetermineNumberVertices()
72 for (
size_t k=0; k<_edges.size(); ++k)
74 for (
size_t j=0; j<_edges[k].size(); ++j)
76 nnode=max(nnode,_edges[k][j]);
77 _vertices.insert(_edges[k][j]);
80 if (_edges.size()>0) _maxvert=nnode;
85 s <<
"Graph with " << rhs.
Nedges() <<
" edges and " << rhs.
Nvertices() <<
" vertices" << endl;
87 auto &edges=rhs._edges;
88 s <<
"\n -- Edges --\n";
89 for (
size_t k=0; k<edges.size(); ++k)
92 for (
size_t j=0; j<edges[k].size(); ++j)
94 s << edges[k][j] <<
" ";
99 s <<
"\n -- Vertices --\n";
100 for (
auto v: rhs._vertices)
size_t Max_vertex() const
graph(const std::string &file_name)
Reads edges for graph from file.
std::vector< std::vector< unsigned int > > get_node2nodes() const
ostream & operator<<(ostream &s, graph const &rhs)