搜索模板(DFS/BFS)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索模板(DFS/BFS)相关的知识,希望对你有一定的参考价值。
DFS
int b[4][2] = {-1,0,0,1,1,0,0,-1}; int DFS( pair<int,int> x ) { int res=0; visited[x.first][x.second]=1; for( int i=0;i<4;i++ ){ pair<int,int> tmp; tmp.first=x.first+b[i][0]; tmp.second=x.second+b[i][1]; if( check(tmp) ) { visited[tmp.first][tmp.second]=1; res+=DFS(tmp); } } return res+1;//返回棋盘中所有能走的点的个数(红黑树) }
BFS
struct Node { int x,y,step; }Node[maxn]; int dire[4][2]={-1,0,0,-1,1,0,0,1}; void BFS() { queue<Node> que; Node p; p.x=st.x; p.y=st.y; p.step=0; que.push(p); visited[p.x][p.y]=1; while(!que.empty()){ Node tmp=que.front(); que.pop(); if( tmp.x=ed.x && tmp.y=ed.y ){ ans=tmp.step; break; } for( int i=0;i<4;i++ ){ Node t; t.x=tmp.x+dire[i][0]; t.y=tmp.y+dire[i][1]; if( check(t) ){ visited[t.x][t.y]=1; t.step=tmp.step+1; que.push(t); } } } }
以上是关于搜索模板(DFS/BFS)的主要内容,如果未能解决你的问题,请参考以下文章
网络流二·最大流最小割定理(Dinic模板+dfs/bfs找S集合模板)
LeetCode 1971[并查集 DFS BFS] 寻找图中是否存在路径 HERODING的LeetCode之路