广搜
首先,本人在此申明,绝对没有黈力,否则我就.....真香qwq
广搜,全名广度优先搜索,类似于二叉树的层序遍历就是以一个点为中心,遍历它周围的节点。
以一个简单的图示来说吧
这是有优先级的。。。
不管你们懂不懂,反正我懂了
//有关广搜的模板
struct node { // 你要表示的状态,例如:坐标 } node _node(/*参数*/) { node r; //初始化 return r; } /* 例如: struct node { int x,y; } node _node(int x,int y) { node r; r.x=x; r.y=y; return r; } */ queue<node>q; bool vis[...]...[...];//判重数组,保证每个状态只访问一次。 void bfs(node s/*起始元素*/) { q.push(s); vis[...]...[...]=1;//初始状态纪录 while(!q.empty()) { node head=q.front(); q.pop(); for(...) {//遍历所有能到达的状态 node new=_node(head...)//新状态 if(...new...&&!vis[...]...[...]) {//新状态合法且没被访问过 q.push(new); vis[...]...[...]=1;//新状态纪录。 } } } }
有关其中的一些函数,这里有必要解释一下
至于题目,我尽量快更(毕竟我啥都不会qwq)