@[yhdxg](/user/1050431) 你这个没标记,不标记就会走重复的路。
by WydnksqhbD @ 2023-12-12 18:34:23
(等一下好像标记了
by WydnksqhbD @ 2023-12-12 18:35:05
@[yhdxg](/user/1050431) 用两个 $s$ 数组,一个判走没走过,一个标记障碍。
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m,t,s=0,ha,la,hb,lb,ax[5]={0,0,0,-1,1},ay[5]={0,1,-1,0,0},a,b;
bool v[10][10]={0},vv[10][10]={0};
int Read()
{
int fff=1,xxx=0;
char ccc=getchar();
while(ccc<'0'||ccc>'9')
{
if(ccc=='-')fff=-fff;
ccc=getchar();
}
while(ccc>='0'&&ccc<='9')
{
xxx=xxx*10+ccc-'0';
ccc=getchar();
}
return fff*xxx;
}
void dfs(int x,int y)
{
if(x==hb&&y==lb)
{
s++;
return ;
}
for(int i=1;i<=4;i++)
{
int nx=x+ax[i],ny=y+ay[i];
if(nx>=1&&nx<=n&&ny>=1&&ny<=n&&vv[nx][ny]==0&&v[nx][ny]==0)
{
v[nx][ny]=1;
dfs(nx,ny);
v[nx][ny]=0;
}
}
}
int main()
{
n=Read(),m=Read(),t=Read(),ha=Read(),la=Read(),hb=Read(),lb=Read();
v[ha][la]=1;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) vv[i][j]=0;
while(t--) a=Read(),b=Read(),v[a][b]=1,vv[a][b]=1;
dfs(ha,la);
cout<<s;
return 0;
}
```
by _zhx @ 2023-12-12 19:03:55
@[WydnksqhbD](/user/1139577) @[_zhx](/user/784712) 我知道了,我标记反了~~嘻嘻~~
by yhdxg @ 2023-12-13 12:04:35
@[yhdxg](/user/1050431) 这不是 `dfs` 吗?
by _zhx @ 2023-12-13 18:14:14
@[_zhx](/user/784712) 没有改,知道,bfs是宽搜
by yhdxg @ 2023-12-14 12:14:16