BFS分层遍历
有时候BFS分层遍历需要考虑到当前遍历的节点是第几层,在这里有一个技巧。
void BFS(int s) {
queue<int>q;
q.push(s);
vis[s]=1;
while(!q.empty()) {
int len=q.size();
while(len--) {
int u=q.top();
q.pop();
for(int i=head[u]; ~i; i=e[i].next) {
int v=e[i].to;
if(vis[v])continue;
q.push(v);
vis[v]=1;
}
}
}
}