社区讨论

为什么会RE

P1162填涂颜色参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mi5heby4
此快照首次捕获于
2025/11/19 12:07
4 个月前
此快照最后确认于
2025/11/19 12:07
4 个月前
查看原帖
CPP
#include<iostream>
using namespace std;
int head,tail,p,q,n;
bool a[1001][1001];
int t[10001][5];
bool b[101][1001];
void bfs()
{
    while(tail>=head)
    {
        head++;
        p=t[head][1];
        q=t[head][2];
        for(int i=1;i<=4;i++)
        {
            if(i==1)
            {
                if(p>=2)
                if(a[p-1][q]==false)
                {
                    tail++;
                    t[tail][1]=p-1;
                    t[tail][2]=q;
                    a[p-1][q]=true;
                    b[p-1][q]=true;
                }
            }
            if(i==2)
            {
                if(p<=n-1)
                if(a[p+1][q]==false)
                {
                    tail++;
                    t[tail][1]=p+1;
                    t[tail][2]=q;
                    a[p+1][q]=true;
                    b[p+1][q]=true;
                }
            }
            if(i==3)
            {
                if(q>=2)
                if(a[p][q-1]==false)
                {
                    tail++;
                    t[tail][1]=p;
                    t[tail][2]=q-1;
                    a[p][q-1]=true;
                    b[p][q-1]=true;
                }
            }
            if(i==4)
            {
                if(q<=n-1)
                if(a[p][q+1]==false)
                {
                    tail++;
                    t[tail][1]=p;
                    t[tail][2]=q+1;
                    a[p][q+1]=true;
                    b[p][q+1]=true;
                }
            }
        }
    }
}
void work()
{
    for(int i=1;i<=n;i++)
    {
        if(a[1][i]==false)
        {
            head=0;
            tail=1;
            t[tail][1]=1;
            t[tail][2]=i;
            a[1][i]=true;
            b[1][i]=true;
            bfs();
        }
    }
    for(int i=1;i<=n;i++)
    {
        if(a[n][i]==false)
        {
            head=0;
            tail=1;
            t[tail][1]=n;
            t[tail][2]=i;
            a[n][i]=true;
            b[n][i]=true;
            bfs();
        }
    }
    for(int i=1;i<=n;i++)
    {
        if(a[i][1]==false)
        {
            head=0;
            tail=1;
            t[tail][1]=i;
            t[tail][2]=1;
            a[i][1]=true;
            b[i][1]=true;
            bfs();
        }
    }
    for(int i=1;i<=n;i++)
    {
        if(a[n][i]==false)
        {
            head=0;
            tail=1;
            t[tail][1]=n;
            t[tail][2]=i;
            a[n][i]=true;
            b[n][i]=true;
            bfs();
        }
    }
}
int main()
{
    int qwer;
    cin>>n;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    {
        cin>>qwer;
        if(qwer==0)
        a[i][j]=false;
        else
        a[i][j]=true;
    }
    work();
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    {
        if((b[i][j]==true)&&(a[i][j]==true))
        cout<<0;
        else
        {
            if(a[i][j]==true)
            cout<<1;
            else
            cout<<2;
        }
        if(j==n)
        cout<<endl;
        else
        cout<<" ";
    }
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...