48分求调
查看原帖
48分求调
1048871
luoziyao楼主2024/4/14 14:34
#include <bits/stdc++.h>
using namespace std; 
int n,d[4][2]={{0,1},{1,0},{-1,0},{0,-1}},mapp[35][35],book[35][35];
struct node
{
	int x,y;
}t;
queue <node> q;
void bfs(int mx,int my)
{
	book[mx][my]=1;
	q.push({mx,my});
	while(!q.empty())
	{
		t=q.front();
		q.pop();
		for(int i=0;i<4;i++)
		{
			int nx=t.x+d[i][0],ny=t.y+d[i][0];
			if(nx<1||nx>n||ny<1||ny>n)continue;
			if(mapp[nx][ny]==2&&book[nx][ny]==0)
			{
				mapp[nx][ny]=0;  
				book[nx][ny]=1;
			}
		}
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>mapp[i][j];
			if(mapp[i][j]==0)mapp[i][j]=2;
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(mapp[1][i]!=1&&book[1][i]==0)
		{
			bfs(1,i);
			mapp[1][i]=0;
			book[1][i]=1;
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(mapp[n][i]!=1&&book[n][i]==0)
		{
			bfs(n,i);
			mapp[n][i]=0;
			book[n][i]=1;
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(mapp[i][1]!=1&&book[i][1]==0)
		{
			bfs(i,1);
			mapp[i][1]=0;
			book[i][1]=1;
		}
	}for(int i=1;i<=n;i++)
	{
		if(mapp[i][n]!=1&&book[i][n]==0)
		{
			bfs(i,n);
			mapp[i][n]=0;
			book[i][n]=1;
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cout<<mapp[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
} 
2024/4/14 14:34
加载中...