MLE!!

P1605 迷宫

@[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


|