哪位大牛麻烦帮看一下哪里不对

P1141 01迷宫

欢迎使用markdown
by 斗神·君莫笑 @ 2018-07-18 09:18:37


```cpp #include<cstdio> #include<cstring> using namespace std; int head,tail; int n,m,x,y,ans=1; int d[10][10]={{0,1},{1,0},{0,-1},{-1,0}}; int a[10001][10001],c[10001][10001]; struct zb{ int xx; int yy; }b[10001]; void bfs(int head,int tail){ while(head!=tail){ for(int i=0;i<4;i++){ if(c[b[head].xx+d[i][0]][b[head].yy+d[i][1]]==0 &&b[head].xx+d[i][0]>=1&&b[head].xx+d[i][0]<=n &&b[head].yy+d[i][1]>=1&&b[head].yy+d[i][1]<=n) if((a[b[head].xx][b[head].yy]==0&&a[b[head].xx+d[i][0]][b[head].yy+d[i][1]]==1) ||(a[b[head].xx][b[head].yy]==1&&a[b[head].xx+d[i][0]][b[head].yy+d[i][1]]==0)){ b[tail].xx=b[head].xx+d[i][0]; b[tail].yy=b[head].yy+d[i][1]; tail++; ans++; c[b[head].xx+d[i][0]][b[head].yy+d[i][1]]==1; } } head++; } printf("%d",ans); } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]); for(int i=1;i<=m;i++){ scanf("%d%d",&x,&y); b[1].xx=x; b[1].yy=y; c[x][y]=1; ans=1; head=1; tail=2; bfs(head,tail); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); } return 0; } ``` @[单志远](/space/show?uid=38084) 帮了你一下
by rgq233666 @ 2018-07-18 09:31:54


自己看吧 ```cpp #include <bits/stdc++.h> using namespace std; long long n,m,ma[1001][1001],f[1001][1001]={},l,x,y; int fx[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; char o; struct Wu_Ren{ int i,j; }q[1000001]; void bfs(int x1,int y1){ f[x1][y1]=1; l++; q[l].i=x1,q[l].j=y1; for(int k=0;k<4;k++){ int xx=x1+fx[k][0],yy=y1+fx[k][1]; if(!f[xx][yy]&&xx<=n&&xx>=1&&yy<=n&&yy>=1&&ma[x1][y1]!=ma[xx][yy]) bfs(xx,yy); } } int main(){ cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ cin>>o; ma[i][j]=o-48; } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ if(f[i][j]) continue; l=0; bfs(i,j); for(int k=1;k<=l;k++) f[q[k].i][q[k].j]=l; } for(int i=1;i<=m;i++){ scanf("%d %d",&x,&y); printf("%d\n",f[x][y]); } return 0; ```
by rgq233666 @ 2018-07-18 09:34:14


|