0

我试图用一个用向量数组实现的邻接表来实现 BFS 算法。我从 1 开始存储输入,而不是从 0 开始。

编辑:我已经更新了代码: http: //ideone.com/GZwPP现在它可以编译并运行,但是当我尝试搜索不在图中的节点时,我得到了这个错误:

terminate called after throwing an instance of 'std::out_of_range'
  what():  vector::_M_range_check
Aborted
4

1 回答 1

1

这个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++)
于 2012-06-28T20:50:55.513 回答