您的位置:首页 > 其它

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

2017-07-03 10:51 246 查看
#include<iostream>

#include<queue>

using namespace std;

int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};

int n,t,a[51][51];

queue<int> 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<<endl;

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: