为什么会WA

P1506 拯救oibh总部

改了两个大锅依然WA最后一个点```cpp #include <iostream> #include <cstdio> #include <queue> using namespace std; const int inf=507; int ans,vis[inf][inf]; char a[inf][inf]; struct node{ int x,y; }; int n,m; inline bool judge(int x,int y){ if(x && y && x<=n && y<=m)return true; else return false; } inline void bfs(){ queue <node> q; q.push((node){0,0}); while(!q.empty()){ node v=q.front(); q.pop(); int i=v.x,j=v.y; if(!vis[i+1][j]&&a[i+1][j]=='0'){ vis[i+1][j]=1; q.push((node){i+1,j}); if(judge(i+1,j))ans--; } if(!vis[i][j+1]&&a[i][j+1]=='0'){ vis[i][j+1]=1; q.push((node){i,j+1}); if(judge(i,j+1))ans--; } if(!vis[i-1][j]&&a[i-1][j]=='0'){ vis[i-1][j]=1; q.push((node){i-1,j}); if(judge(i-1,j))ans--; } if(!vis[i][j-1]&&a[i][j-1]=='0'){ vis[i][j-1]=1; q.push((node){i,j-1}); if(judge(i,j-1))ans--; } } } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ a[i][0]='0'; a[i][m+1]='0'; } for(int i=1;i<=m;i++){ a[0][i]='0'; a[n+1][i]='0'; } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ cin>>a[i][j]; if(a[i][j]=='0')ans++; } bfs(); cout<<ans; return 0; } ```
by _RedForest @ 2019-02-27 20:10:21


改了两个大锅依然WA最后一个点 ```cpp // luogu-judger-enable-o2 #include <iostream> #include <cstdio> #include <queue> using namespace std; const int inf=507; int ans,vis[inf][inf]; char a[inf][inf]; struct node{ int x,y; }; int n,m; inline bool judge(int x,int y){ if(x && y && x<=n && y<=m)return true; else return false; } inline void bfs(){ queue <node> q; q.push((node){0,0}); while(!q.empty()){ node v=q.front(); q.pop(); int i=v.x,j=v.y; if(!vis[i+1][j]&&a[i+1][j]=='0'){ vis[i+1][j]=1; q.push((node){i+1,j}); if(judge(i+1,j))ans--; } if(!vis[i][j+1]&&a[i][j+1]=='0'){ vis[i][j+1]=1; q.push((node){i,j+1}); if(judge(i,j+1))ans--; } if(!vis[i-1][j]&&a[i-1][j]=='0'){ vis[i-1][j]=1; q.push((node){i-1,j}); if(judge(i-1,j))ans--; } if(!vis[i][j-1]&&a[i][j-1]=='0'){ vis[i][j-1]=1; q.push((node){i,j-1}); if(judge(i,j-1))ans--; } } } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ a[i][0]='0'; a[i][m+1]='0'; } for(int i=1;i<=m;i++){ a[0][i]='0'; a[n+1][i]='0'; } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ cin>>a[i][j]; if(a[i][j]=='0')ans++; } bfs(); cout<<ans; return 0; } ```
by _RedForest @ 2019-02-27 20:11:22


|