と を使用してグラフを作成し875713 nodes
てい5105039 edges
ます。セグメンテーション違反を使用vector<bitset<875713>> vec(875713)
またはarray<bitset<875713>, 875713>
スローします。パス回復を使用して、すべてのペアの最短パスを計算する必要があります。どのような代替データ構造がありますか?
このSO スレッドを見つけましたが、私の質問には答えません。
編集
提案を読んだ後、これを試してみましたが、うまくいくようです。私を助けてくれてありがとう。
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);
}
}