WA0分求调,谢谢

求大佬改正错误


我的代码

#include<bits/stdc++.h>
#include<ostream>
using namespace std;
int vis[505][505],n,m;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
struct node{
    int x,y;
};
void bfs(int x,int y){
    queue<node> q;
    q.push({x,y});
    vis[x][y]=1;
    while(!q.empty()){
        node now=q.front();
        q.pop();
        for(int i=0;i<4;i++) {
            int xx=now.x+dx[i];
            int yy=now.y+dy[i];
            if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&vis[xx][yy]==0){
                q.push({xx,yy});
                vis[xx][yy]=2;
            }
        }
    }
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>vis[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(vis[i][j]==0&&(i==1||i==n||j==1||j==n)){
                bfs(i,j);
            }
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++) {
            if(vis[i][j]==2){
                cout<<0<<" ";
            }
            else if(vis[i][j]==0){
                cout<<2<<" ";
            }
            else{
                cout<<1<<" ";
             }
        }
    cout<<endl;
    }
    return 0;
}

为什么vis[x][y]=1;不是等于2?
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&vis[xx][yy]==0)
这是什么,哪来的m。

A了