我的BFS板子
struct node{/*略*/};//表示一个状态
std::map<node,bool>vis;//判断每个状态是否已访问过
std::queue<node>q;//BFS扩展队列
//BFS主代码
q.push(start_node);
vis[start_node]=1;
while(!q.empty()){
node head=q.front();
q.pop();
for(int i:directions){
node new=move(head,i);
if(!valid(new)||vis[new])continue;
//做题
q.push(new);
vis[new]=1;
}
}