reporting actual number of nodes instead of what data file wants

This commit is contained in:
Dennis Luxen 2011-03-31 14:44:41 +00:00
parent 571e6be9ce
commit 08854d9f6b

View File

@ -292,14 +292,16 @@ NodeID readDTMPGraphFromStream(istream &in, vector<EdgeT>& edgeList, vector<Node
template<typename EdgeT> template<typename EdgeT>
NodeID readDDSGGraphFromStream(istream &in, vector<EdgeT>& edgeList, vector<NodeInfo> * int2ExtNodeMap) { NodeID readDDSGGraphFromStream(istream &in, vector<EdgeT>& edgeList, vector<NodeInfo> * int2ExtNodeMap) {
ExternalNodeMap nodeMap; nodeMap.set_empty_key(UINT_MAX);
NodeID n, source, target; NodeID n, source, target;
unsigned numberOfNodes = 0;
char d; char d;
EdgeID m; EdgeID m;
int dir;// direction (0 = open, 1 = forward, 2+ = open) int dir;// direction (0 = open, 1 = forward, 2+ = open)
in >> d; in >> d;
in >> n; in >> n;
in >> m; in >> m;
std::cout << n << " nodes and " << m << " edges ..." << flush; std::cout << "expecting " << n << " nodes and " << m << " edges ..." << flush;
edgeList.reserve(m); edgeList.reserve(m);
for (EdgeID i=0; i<m; i++) { for (EdgeID i=0; i<m; i++) {
@ -327,10 +329,20 @@ NodeID readDDSGGraphFromStream(istream &in, vector<EdgeT>& edgeList, vector<Node
EdgeT inputEdge(source, target, 0, weight, forward, backward, 1 ); EdgeT inputEdge(source, target, 0, weight, forward, backward, 1 );
edgeList.push_back(inputEdge); edgeList.push_back(inputEdge);
if( nodeMap.find(source) == nodeMap.end()) {
nodeMap[numberOfNodes] = source;
numberOfNodes++;
}
if( nodeMap.find(target) == nodeMap.end()) {
nodeMap[numberOfNodes] = target;
numberOfNodes++;
}
} }
vector<ImportEdge>(edgeList.begin(), edgeList.end()).swap(edgeList); //remove excess candidates. vector<ImportEdge>(edgeList.begin(), edgeList.end()).swap(edgeList); //remove excess candidates.
cout << "ok" << endl; cout << "ok" << endl;
return n; std::cout << "imported " << numberOfNodes << " nodes and " << edgeList.size() << " edges" << std::endl;
nodeMap.clear();
return numberOfNodes;
} }
template<typename EdgeT> template<typename EdgeT>