13 : _edges(0), _nvert(0)
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();
47 vector<vector<unsigned int>> n2n(nnode);
48 for (
size_t k=0; k<_edges.size(); ++k)
50 const int v0 = _edges[k][0];
51 const int v1 = _edges[k][1];
52 n2n.at(v0).push_back(v1);
53 n2n.at(v1).push_back(v0);
56 for (
size_t k=0; k<n2n.size(); ++k)
58 sort(n2n[k].begin(),n2n[k].end());
65 void graph::DetermineNumberVertices()
70 for (
size_t k=0; k<_edges.size(); ++k)
72 for (
size_t j=0; j<_edges[k].size(); ++j)
74 nnode=max(nnode,_edges[k][j]);
77 if (_edges.size()>0) ++nnode;
83 auto &edges=rhs._edges;
84 s <<
"\n -- Edges --\n";
85 for (
size_t k=0; k<edges.size(); ++k)
88 for (
size_t j=0; j<edges[k].size(); ++j)
90 s << edges[k][j] <<
" ";
95 s <<
"Graph with " << rhs.
Nedges() <<
" edges and " << rhs.
Nvertices() <<
" vertices" << endl;
std::vector< std::vector< unsigned int > > get_node2nodes() const
friend std::ostream & operator<<(std::ostream &s, graph const &rhs)
graph(const std::string &file_name)
Reads edges for graph from file.