BFS
BFS
一.代码实现
原理
通过创建临时队列,实现从近到远扩散式的遍历
由邻接表实现,时间复杂度O(N+E) (每个节点访问一次,每个节点相邻的边也访问一次)
vector<int>e[N];
int vis[N];
queue<int>q;
void bfs()
{
vis[1]=1; q.push(1);//起点
while(!q.empty())//如果队列不为空
{
int cur=q.front();//将队首元素设为cur
q.pop();//弹出队首
for(auto y:e[cur])//遍历队首元素的孩子
{
if(!vis[y])//如果没访问过的话,
{
q.push(y);//就加入队列
vis[y]=1;//这个现在被访问过了
}
}
}
}