Bfs搜索一个小技巧
void bfs(int sx,int sy) { queue<node>q; vis[sx][sy]=true; q.push(node{sx,sy}); while(!q.empty()) { node pre=q.front(); q.pop(); for(int i=0;i<8;i++) { int X=pre.x+dx[i]; int Y=pre.y+dy[i]; if(vis[X][Y]||out(X,Y)||mapl[X][Y]=='X')continue; vis[X][Y]=true; q.push(node{X,Y}); } } }
要把vis放在插入queue前,
而不是从queue取出节点之后,不然会超时