记得用vis数组判重,会导致抵达一个点的状态有很多种,可实际上只有步数最小(第一个搜到)的有意义,剩下的存在队列里浪费空间。大概就是这样的:
node cur = q.front(); q.pop() if (没越界 && !vis[cur]) { q.push(xxx); vis[cur] = true; } vis数组初始化全为0