gpt4 book ai didi

c++ - 我的 BFS 函数中的无限循环

转载 作者:太空狗 更新时间:2023-10-29 20:23:18 24 4
gpt4 key购买 nike

我正在尝试在 C++ 中实现 BFS 算法以查找每个节点与源顶点(例如 0)的距离,但我的函数中似乎存在无限循环。经过一些调试后,我发现所有节点都被访问了,但我的队列永远不会变空。这是为什么?

#include <bits/stdc++.h>

using namespace std;

int d[1000];
int visited[1000];
vector <int> adj[1000];

queue<int> que;

void bfs(int source)
{
d[source]=0;
visited[source]=1;
que.push(source);
while(!que.empty())
{
int current = que.front();
que.pop();
for (int i=0;i<adj[current].size();i++)
{
int v=adj[current][i];
if(visited[v]!=1);
{
visited[v]=1;
d[v]=d[current]+1;
que.push(v);
}
}
}
}
int main(){
int E,start,end,n;
cin >> n >> E;
for (int i=0;i<n;i++)
d[i]=-1;
for (int i=0;i<n;i++)
visited[i]=0;
for (int i=0;i<E;i++)
{
cin >> start >> end;
adj[start].push_back(end);
adj[end].push_back(start);
}
bfs(0);
for (int i=0;i<n;i++)
cout << "d" << i << "= " << d[i] << endl;
return 0;
}

最佳答案

我看到的唯一错误是::

if(visited[v]!=1);

您只需要删除一个分号!! :D

关于c++ - 我的 BFS 函数中的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33699531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com