我尝试使用带有向量数组的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
答案 0 :(得分:1)
这个bug真的很微妙。你的代码中有:
for(i = 1; i <= adj[front].size() - 1 && adj[front].at(0) != 0; i++)
size()
是什么类型的?这是一种无符号类型。因此size() == 0
因arithmetic overflow而size() - 1 > 0
for(i = 1; i < adj[front].size() && adj[front].at(0) != 0; i++)
。您应该将该行更改为:
{{1}}