32分求助

P1162 填涂颜色

qwq666666 @ 2022-11-03 23:20:00

#include<bits/stdc++.h>
using namespace std;
struct F{
    int x,y;
};
queue<F>f;
int a[100][100],n;
const int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int main(){
    cin >> n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            scanf("%d",&a[i][j]);
        }
    }
    for(int i=0;i<=n+1;i++){
        for(int j=0;j<=0+1;j++){
            if(i==0||i==n+1||j==0||j==n+1){
                a[i][j]=3;
                f.push({i,j});
                while(!f.empty()){
                    for(int m=0;m<4;m++){
                        int tx=f.front().x+dir[m][0];
                        int ty=f.front().y+dir[m][1];
                        if(tx>=1&&tx<=n&&ty>=1&&ty<=n&&a[tx][ty]==0){
                            a[tx][ty]=3;
                            f.push({tx,ty});
                        }
                    }
                    f.pop();
                }
            }   
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(a[i][j]==0)printf("2 ");
            else if(a[i][j]==1)printf("1 ")
            else printf("0 ");
        }
        printf("\n");
    }
    return 0;
}

by qwq666666 @ 2022-11-03 23:28:43

没事了过了,玄学

#include<bits/stdc++.h>
using namespace std;
struct F{
    int x,y;
};
queue<F>f;
int a[100][100],n;
const int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int main(){
    cin >> n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            scanf("%d",&a[i][j]);
        }
    }
    for(int i=0;i<=n+1;i++){
        for(int j=0;j<=0+1;j++){
            if(i==0||i==n+1||j==0||j==n+1&&a[i][j]==0){
                a[i][j]=3;
                f.push({i,j});
                while(!f.empty()){
                    for(int m=0;m<4;m++){
                        int tx=f.front().x+dir[m][0];
                        int ty=f.front().y+dir[m][1];
                        if(tx>=0&&tx<=n+1&&ty>=0&&ty<=n+1&&a[tx][ty]==0){
                            a[tx][ty]=3;
                            f.push({tx,ty});
                        }
                    }
                    f.pop();
                }
            }   
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(a[i][j]==0)printf("2 ");
            else if(a[i][j]==1)printf("1 ");
            else printf("0 ");
        }
        printf("\n");
    }
    return 0;
}

|