BFS 入门题目 洛谷 P1162 填涂颜色

#include
#include
using namespace std;
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int n,t,a[51][51];
queue qx,qy;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            cin>>a[i][j];
        }
    }
    qx.push(0);
    qy.push(0);
    while(!qx.empty())
    {
        int x=qx.front();
        int y=qy.front();
        for(int k=0;k<4;k++)//从0,0开始搜索
        {
            int dx=dir[k][0];
            int dy=dir[k][1];
            if (x+dx>=0 && x+dx<=n+1 && y+dy>=0 && y+dy<=n+1 && !a[x+dx][y+dy])
            {
                a[x+dx][y+dy]=2;//1外围的为0的全为2
                qx.push(x+dx);
                qy.push(y+dy);
            }
        }
        qx.pop();
        qy.pop();
    }
    for (int i=1; i<=n; i++)
    {
        for (int j=1; j<=n; j++)
        {
            cout<<2-a[i][j]<<' ';
        }
        cout<     }
    return 0;
}

你可能感兴趣的:(BFS 入门题目 洛谷 P1162 填涂颜色)