BFS在C ++中的实现

时间:2012-06-28 18:30:29

标签: c++ breadth-first-search

我尝试使用带有向量数组的adjasency表来实现BFS算法。我开始存储来自1而不是0的输入。

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

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

1 个答案:

答案 0 :(得分:1)

这个bug真的很微妙。你的代码中有:

for(i = 1; i <= adj[front].size() - 1 && adj[front].at(0) != 0; i++)

size()是什么类型的?这是一种无符号类型。因此size() == 0arithmetic overflowsize() - 1 > 0 for(i = 1; i < adj[front].size() && adj[front].at(0) != 0; i++) 。您应该将该行更改为:

{{1}}