关于这两种搜索的概念不再多说,直接上代码
void DFS(int v)
{
if(v==-1) return;
Visit[v]=true;
for(int i=0;i<S[i].child.size();i++)
{
if(Visit[S[i].child[i]]==false)
{
DFS(S[i].child[i]);
}
}
}
BFS
struct node
{
int x,y
};
int xx[4]={1,-1,0,0};
int yy[4]={0,0,1,-1};
bool Judge(int x,int y)
{
if(x>=n||x<0||y>=n||y<0) return 0;
if(Visit[x][y]==true) return 0;
}
void BFS(int x,int y)
{
queue<node> q;
Visit[x][y]=true;
node p= new node;
p.x=x;p.y=y;
q.push(p);
while(!q.empty())
{
p=q.front();
q.pop();
for(int i=0;i<4;i++)
{
int ix=p.x+xx[i];
int iy=p.y+yy[i];
if(Judge(ix,iy)==true)
{
node k=new node;
k.x=ix;
k.y=iy;
q.push(k);
}
}
}
}