P1162 填涂颜色(2)

点击查看代码
#include<bits/stdc++.h>
using namespace std;

typedef pair<int,int> PII;
const int MAXN=35;
int g[MAXN][MAXN];
int n;
int dx[4]={-1,0,0,1};
int dy[4]={0,-1,1,0};

void bfs(int startX,int startY)
{
    g[startX][startY]=3;

    //初始化与启动
    queue<PII> q;
    q.push({startX,startY});

    //开始循环
    while(!q.empty()){
        PII u=q.front();
        q.pop();

        for(int i=0;i<4;i++){
            int nx=u.first+dx[i];
            int ny=u.second+dy[i];
            if(nx>=0&&nx<=n+1&&ny>=0&&ny<=n+1&&g[nx][ny]==0){
                g[nx][ny]=3;
                q.push({nx,ny});
            }
        }
    }
}

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>g[i][j];

    bfs(0,0);

    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(g[i][j]==3){
                cout<<0<<" ";
            }else if(g[i][j]==0){
                cout<<2<<' ';
            }else{
                cout<<1<<' ';
            }
        }
        cout<<endl;
    }

    return 0;
}

posted @ 2026-01-11 00:17  AnoSky  阅读(14)  评论(0)    收藏  举报