gpt4 book ai didi

c++ - 具有 STL C++ 错误的强连接组件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:57:31 24 4
gpt4 key购买 nike

我有一个包含有向图的文件。图顶点标记为从 1 到 N,N 接近 800.000(千)。我的硬币容器是:

vector<long> isExplored;
vector<long> f;
vector<vector<long>> matrix;
vector<vector<long>> matrixInverse;

我读取文件并设置 vector 的文件函数是( vector [0] 始终为零,即容器的大小为 n+1):

void InputClass::readFile() {
ifstream inputFile;
inputFile.open(fileName);
string line;
string word;
int vertexNumber = 0;
while(getline(inputFile, line)) {
istringstream inputStream(line);
inputStream >> word;
if(vertexNumber != stoi(word)) {
vertexNumber = stoi(word);
matrix.resize(vertexNumber + 1);
}
while(inputStream >> word) {
if(matrix[vertexNumber].size() == 0) {
matrix[vertexNumber].push_back(0);
}
matrix[vertexNumber].push_back(stoi(word));
}
}
long size = matrix.size();
isExplored.resize(size);
f.resize(size);
for(unsigned long i = 0; i < matrix.size(); i++) {
isExplored.push_back(false);
f.push_back(0);
}
cout << "done";
}
My dfs algorithm is:

void dfs(long vertex, InputClass kostas) {
isExplored[vertex] = true;
cout << "vertex: " << vertex; //1
for(unsigned long i = 1; i < kostas.matrix[vertex].size(); i++) {
cout << " i: " << i << endl;
if(!isExplored[kostas.matrix[vertex].at(i)]) {
cout << "done1" << endl;
dfs(kostas.matrix[vertex].at(i), kostas);
cout << "done2" << endl;
}
}
t++;
f[vertex] = t;
}

最后是 dfs 循环:

void dfsLoop(InputClass kostas) {
t = 0;
for(unsigned long i = kostas.matrix.size() - 1; i >= 1; i--) {
if(!isExplored[i]) {
dfs(i, kostas);
cout << "done" << " t " << endl;
}
//more code here
}

在一些(我认为是 5 次)dfs 递归调用之后,我的程序在 i = kostas.matrix.size() - 1 处崩溃。崩溃发生在 dfs 调用上,并且永远不会打印//1。我已经检查了 vector ,但它们初始化得很好。由于//1 从未打印过,我猜测崩溃发生在函数的变量 long vertex 或 InputClass kostas 上。 Kostas 应该没问题,我猜是长顶点导致了错误。有什么建议么?我还必须提到该算法在小/中输入时没有问题。

最佳答案

在我看来,您每次调用 dfs 时都在复制 InputClass。尝试通过将方法更改为 void dfs(long vertex, InputClass &kostas) 并将方法调用更改为 dfs(i, kostas);

来通过引用传递它

关于c++ - 具有 STL C++ 错误的强连接组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31865079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com