题意:nXm的地图, 问通过四个方向从(1,1)走到(1000,1000)所经过的最小二进制序列是多少,忽略前缀0.
思路:首先如果起点为0,那么我们bfs搜索和起点0联通的为0的连通块,这样我们第一步肯定是从与这个连通块相邻的且与重点最近的地方出发。
将所有可能起点加入队列,在bfs一遍找到字典序最小的那条路就是答案,
在这里可以用两个vector类型容器,一个是q2存储所有节点值存为0的结点,
另一个q3存储节点值为1的结点。
那么如果q2不为空那么也就是有可以走零,那么就从这里面选,否则从q3中选。
ps:下午比赛时各种doubi,先是dfs无悬念超时....然后改成把求字典序的那个dfs改成了bfs结果re访问非法.......改了后结果爆栈.........最后改了一发觉得肯定对了然而mle了......
直到比赛结束也没发现为啥mle了,写了三个半小时要哭了..........回来后发现是因为最开始搜索连通块时我是每次访问结点时才置vis为1而不是每次添加结点时就置vis为1,这样每次会添加很多重复结点肯定会mle...........哭晕在厕所,本来可以