我试图用一个用向量数组实现的邻接表来实现 BFS 算法。我从 1 开始存储输入,而不是从 0 开始。
编辑:我已经更新了代码: http: //ideone.com/GZwPP现在它可以编译并运行,但是当我尝试搜索不在图中的节点时,我得到了这个错误:
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
Aborted
我试图用一个用向量数组实现的邻接表来实现 BFS 算法。我从 1 开始存储输入,而不是从 0 开始。
编辑:我已经更新了代码: http: //ideone.com/GZwPP现在它可以编译并运行,但是当我尝试搜索不在图中的节点时,我得到了这个错误:
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
Aborted
这个bug真的很微妙。您的代码中有:
for(i = 1; i <= adj[front].size() - 1 && adj[front].at(0) != 0; i++)
什么类型size()
?它是无符号类型。所以当size() == 0
那时size() - 1 > 0
因为算术溢出。您应该将行更改为:
for(i = 1; i < adj[front].size() && adj[front].at(0) != 0; i++)