DFS, 80, TLE两个点

P1141 01迷宫

@[DeepWhite_](/space/show?uid=184404) dfs应该这么写。 ```cpp #include <bits/stdc++.h> using namespace std; const int N=1234; const int MAXN=123456; const int INF=1234567; int tot[INF],m,n,cnt,a[N][N],vis[N][N],val[N][N],x[MAXN],y[MAXN]; char s[N]; void dfs(int x,int y,int cnt) { if(vis[x][y]) return; a[x][y]=cnt; vis[x][y]=1; tot[cnt]++; if(x>1&&val[x-1][y]==val[x][y])dfs(x-1,y,cnt); if(y>1&&val[x][y-1]==val[x][y])dfs(x,y-1,cnt); if(x<n&&val[x+1][y]==val[x][y])dfs(x+1,y,cnt); if(y<n&&val[x][y+1]==val[x][y])dfs(x,y+1,cnt); } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%s",s+1); for(int j=1;j<=n;j++) val[i][j]=s[j]-'0'^(i+j&1); } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(!a[i][j])cnt++; dfs(i,j,cnt); } for(int i=1;i<=m;i++) { scanf("%d%d",&x[i],&y[i]); printf("%d\n",tot[a[x[i]][y[i]]]); } return 0; } ```
by Smile_Cindy @ 2019-03-19 21:29:56


@[DeepWhite_](/space/show?uid=184404) 这题必须记忆化DFS/BFS,不然就TLE
by wxwoo @ 2019-03-19 21:37:11


~~论cache的重要性~~
by fzfnf @ 2019-03-19 21:38:34


@[wxwoo](/space/show?uid=116659) 这算记忆化么? ```cpp #include<cstdio> using namespace std; int n,m,i,j,x,y,s,t=1,f[4][2]={{0,1},{1,0},{0,-1},{-1,0}},a[1001][1001],b[1001][1001],g[100001]; char c[1001]; void dfs(int x,int y)//未改动 { b[x][y]=t; for(int k=0;k<=3;k++) { int tx=x+f[k][0],ty=y+f[k][1]; if(!(tx<1||tx>n||ty<1||ty>n||b[tx][ty]==t||a[tx][ty]==a[x][y])) { s++; b[tx][ty]=t; dfs(tx,ty); } } return ; } int main() { scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { scanf("%s",c); for(j=1;j<=n;j++) a[i][j]=c[j-1]-'0'; } for(i=1;i<=m;i++) { scanf("%d%d",&x,&y); if(b[x][y]!=0) { printf("%d",g[b[x][y]]); continue;//如果走过了就输出存在g数组里的s } dfs(x,y); printf("%d\n",s+1); g[i]=s+1; s=0; t++;//每次把s放进g数组存储 } return 0; } ```
by Naivecat是女孩子 @ 2019-03-19 21:42:33


先找联通块,再直接输出
by AC_Automation @ 2019-03-19 21:42:34


@[DeepWhite_](/space/show?uid=184404) ~~并查集多好用~~
by nofall @ 2019-03-19 21:43:14


@[咕咕咕自动机](/space/show?uid=118317) qaq
by Naivecat是女孩子 @ 2019-03-19 21:45:58


用LCA
by Anonymous匿名者 @ 2019-03-19 22:04:44


当我没说
by Anonymous匿名者 @ 2019-03-19 22:05:07


@[DeepWhite_](/space/show?uid=184404) 算
by wxwoo @ 2019-03-19 22:07:16


| 下一页