BFS函数中的无限循环
Infinite loop in my BFS function
我试图在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
相关文章:
- 为什么这个递归函数会创建一个无限循环?
- 带有do函数的无限循环
- loop() 函数之外的无限循环
- 具有获取函数的无限循环
- C 递归函数无限循环
- 冰雹序列C 函数需要计算序列的长度.无限循环问题
- 无限构造函数循环
- 开关大小写语句中函数中的字符串输入会导致无限循环和绕过输入
- 实现递归函数,避免由 C++ 中 include 的循环调用(没有 #pragma 一次)引起的无限循环输入
- 当 c++ 布尔函数返回 true 时无限循环
- 第一个函数中的无限循环不知道如何解决
- 无限循环与做而函数
- eof() 函数不起作用 C++ 陷入无限循环
- 从模板类调用函数时形成的无限循环,请任何人解释
- C++字符串替换函数无限循环
- 有什么更有效的方法来确保我不会在这个快速排序函数中陷入无限循环?(C++)
- 这是一个具有基于数组的列表函数的数据结构项目,我似乎无法摆脱这个无限循环。
- C++中的二进制搜索函数返回无限循环
- 这个递归函数(回文)变成了一个无限循环
- 在具有静态对象的类的析构函数中使用 exit(),不会像预期的那样结束无限循环