【发布时间】:2016-04-27 19:28:13
【问题描述】:
我正在尝试在无向无权图的邻接矩阵上实现 BFS,它返回访问的节点数。到目前为止,我已经想出了这个,但我认为这是不对的,因为当我打印出顶部/访问过的节点时,我得到了一些节点的多次出现并且它没有排序。我在某处读到 BFS 是一种拓扑排序,而我得到的顺序没有排序。
int BFS(std::vector<std::vector<int> > &matrix, int start)
{
std::vector<bool> visited(matrix.size(), false);
std::queue<int> Q;
Q.push(start);
int count = 0;
while( ! Q.empty())
{
int top = Q.front(); Q.pop();
visited[top] = true; count++;
for (int i = 0; i < matrix.size(); ++i)
{
if(matrix[top][i] != 0 && (! visited[i]) )
{
Q.push(i);
}
}
}
return count;
}
【问题讨论】:
-
你为什么不觉得是对的?
-
我只是在编辑问题以添加它,而你却投了反对票。
-
我没有投反对票。 :)