大佬救一下为甚么不对aaaaaaaaaaaaa
查看原帖
大佬救一下为甚么不对aaaaaaaaaaaaa
750476
Hf_Poem楼主2023/5/23 23:08
#include<bits/stdc++.h>
#define int long long
#define il inline
using namespace std;
const int N=40;
int n,i,j;
int m[N][N],ans[N][N],vis[N][N];//m存输入,vis标记数组,ans输出数组 
int dx[5]={0,1,0,-1,0},dy[5]={0,0,-1,0,1};//偏移数组 
queue<int>qx,qy;
il void bfs(int x,int y){//传入坐标开始广搜 
	qx.push(x);
	qy.push(y);
	vis[x][y]=1;
	while(!qx.empty()){
		int xx=qx.front(),yy=qy.front();
		qx.pop(),qy.pop();
		for(i=1;i<=4;i++){//四向偏移 
			int xxx=xx+dx[i],yyy=yy+dy[i];
			if(vis[xxx][yyy]==0&&m[xxx][yyy]==0&&xxx>=1&&xxx<=n&&yyy>=1&&yyy<=n){//判定 
				vis[xxx][yyy]=1;
				qx.push(xxx);
				qy.push(yyy);
			}
		}
	}
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);//朴实の加速码 
	cin>>n;
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			cin>>m[i][j];
			ans[i][j]=m[i][j];//同时保存ans和m 
			if(m[i][j]==1)
				vis[i][j]=1;//如果是墙vis提前标记1 
		}
	}
	for(i=1;i<=n;i++){//四个边界搜 
		if(vis[1][i]==0)
			bfs(1,i);
		if(vis[n][i]==0)
			bfs(n,i);
		if(vis[i][1]==0)
			bfs(i,1);
		if(vis[i][n]==0)
			bfs(i,n);
	}
	for(i=1;i<=n;i++){//更新ans 
		for(j=1;j<=n;j++){
			if(vis[i][j]==0)
			ans[i][j]==2;
		}
	}
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			cout<<ans[i][j]<<' ';
		}
		cout<<"\n";
	}
	return 0;
}

就是不对qwq

要命了这个

2023/5/23 23:08
加载中...