http://acm.hust.edu.cn/vjudge/contest/view.action?cid=65959#status
大约做了一周的kuangbin带你飞搜索专题,也逐渐对搜索慢慢熟练了起来。
一般的搜索就是DFS和BFS
DFS
DFS就用递归来写,需要注意的地方
- 递归返回时要恢复变量,递归改变和恢复的都是下一层的变量
- 要求输出路径的时候,我比较喜欢用son数组来记录,这样输出的时候直接顺序输出
BFS
求最小值之类的就是BFS,我一般会使用结构体
- BFS也要标记访问,不过由于没有返回过程,所以不用恢复变量
- 多case问题记得要清空队列
- 输出路径时,由于一个节点会有多个son,所以只能用father数组进行存储
其它
- 保存图的时候习惯用Map和vis两个数组进行存储
- 都要注意初始状态的标记处理,如标记访问
- 写方向数组的时候有4,5,8的情况。5个方向就是包括自身,这个要注意
- 由于没有判断in,可能会导致访问非法而改变n,m的值
- 有一类关闭灯的问题,只需枚举第一行的状态,后面所以的状态就已经确定了。只需判断前一行的灯的状态