32分求助,感谢大佬!!!
  • 板块P1162 填涂颜色
  • 楼主aciel
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/3/7 14:07
  • 上次更新2023/10/23 22:47:34
查看原帖
32分求助,感谢大佬!!!
811697
aciel楼主2023/3/7 14:07
#include <iostream>
#include <queue>
using namespace std;
int n;
int a[31][31];
int v[31][31];//1表示标记
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};

struct node
{
	int x;
	int y;
}st,tx;
queue <node> q;

int bfs(int x,int y)
{
	st.x=x;
	st.y=y;
	v[x][y]=1;
	q.push(st);
	
	while(!q.empty())
	{
		st=q.front();
		q.pop();
		
		for(int i=0;i<4;i++){//四个方向
			tx.x=st.x+dx[i];
			tx.y=st.y+dy[i];
			//此处是0 并且未访问过  未出界
			if(a[tx.x][tx.y]==0&&v[tx.x][tx.y]==0&&tx.x>=0&&tx.x<=n+1&&tx.y>=0&&tx.y<=n+1){
				v[tx.x][tx.y]=1;
				q.push(tx);
			}
		}
	}
	
}

int main()
{
	
	cin>>n;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cin>>a[i][j];
		}
	}
	bfs(0,0);
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(v[i][j]==0&&a[i][j]==0){
				a[i][j]=2;
			}
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
2023/3/7 14:07
加载中...