我正在使用875713 nodes
和绘制图表5105039 edges
。使用vector<bitset<875713>> vec(875713)
或array<bitset<875713>, 875713>
向我抛出段错误。我需要通过路径恢复计算所有对最短路径。我有哪些替代数据结构?
我找到了这个SO Thread,但它没有回答我的查询。
编辑
我在阅读建议后尝试了这个,似乎有效。感谢大家帮助我。
vector<vector<uint>> neighboursOf; // An edge between i and j exists if
// neighboursOf[i] contains j
neighboursOf.resize(nodeCount);
while (input.good())
{
uint fromNodeId = 0;
uint toNodeId = 0;
getline(input, line);
// Skip comments in the input file
if (line.size() > 0 && line[0] == '#')
continue;
else
{
// Each line is of the format "<fromNodeId> [TAB] <toNodeId>"
sscanf(line.c_str(), "%d\t%d", &fromNodeId, &toNodeId);
// Store the edge
neighboursOf[fromNodeId].push_back(toNodeId);
}
}