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的值
- 有一类关闭灯的问题,仅仅需枚举第一行的状态,后面所以的状态就已经确定了。仅仅需推断前一行的灯的状态