蒟蒻48分求助

P1162 填涂颜色

TIS_Minecraft_CNAI @ 2023-09-30 20:25:20

蒟蒻48分code:

#include<bits/stdc++.h>
using namespace std;
int n,a[35][35],map[35][35];
int xx[5]= {0,0,0,1,-1};
int yy[5]= {0,1,-1,0,0};
void dfs(int x,int y) {
    for(int i=0; i<=4; i++) {
        int dx=x+xx[i];
        int dy=y+yy[i];
        if(a[dx][dy]==1)
            return ;
        if(dx<=n && dx>=1 && dy<=n && dy>=1 && a[dx][dy]==0) {
            a[dx][dy]=2;
            dfs(dx,dy);
        }
    }
}
int main() {
    cin>>n;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
            cin>>a[i][j];
    for(int i=1; i<=n; i++)
        dfs(1,i);
    for(int i=1; i<=n; i++)
        dfs(i,1);
    for(int i=1; i<=n; i++)
        dfs(n,i);
    for(int i=1; i<=n; i++)
        dfs(i,n);
    for(int i=1; i<=n; i++) {
        for(int j=1; j<=n; j++)
            if(a[i][j]==0)
                cout<<2<<" ";
            else if(a[i][j]==2)
                cout<<0<<" ";
            else
                cout<<a[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}

|