c++ 32分蒟蒻求助
查看原帖
c++ 32分蒟蒻求助
785296
LVFUyang1楼主2024/7/25 20:16
#include<bits/stdc++.h>
using namespace std;
int n;
int a[10000][10000];
int dx[5]={1,0,-1,0}, dy[5]={0,1,0,-1};
int bfs(int x,int y)
{
    int head=0,tail=1;
    int h[1000][3];
    h[1][1]=x,h[1][2]=y;
    int xi,yi;
    int i;
    if(!a[x][y])
    a[x][y]=2;
    while(head<tail)
    {
      head++;
      for(i=0;i<=3;i++)    
        {
          xi=h[head][1]+dx[i];yi=h[head][2]+dy[i];    
            if(xi>0&&xi<=n&&yi>0&&yi<=n&&!a[xi][yi])
              {
                tail++;    
                h[tail][1]=xi;
                h[tail][2]=yi;         
                a[xi][yi]=2;
              }
        }    
    }
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
		}
	}
	int i,j;
    for(i=1;i<=n;i++)
    if(!a[1][i])
      bfs(1,i);
    for(i=1;i<=n;i++)
    if(!a[i][1])
      bfs(i,1);
    for(i=n;i>=1;i--)
     if(!a[n][i])
      bfs(n,i);
    for(i=n;i>=1;i--)
     if(!a[i][n])
      bfs(i,n);
    for(i=1;i<=n;i++)
      for(j=1;j<=n;j++)
        {
         if(a[i][j]==2)    
          cout<<0<<" ";
         if(a[i][j]==1)    
          cout<<1<<" ";     
         if(a[i][j]==0)
          cout<<2<<" ";    
         if(j==n)
          cout<<endl;
        }
}
2024/7/25 20:16
加载中...