bfs玄学错误
查看原帖
bfs玄学错误
376063
蓝枫_寞楼主2020/11/6 20:03

蒟蒻学习bfs 打完代码后完全不知道为什么炸了

#include<bits/stdc++.h>
using namespace std;
int n,a[35][35];
short m1[4]={-1,0,0,1};
short m2[4]={0,-1,1,0};
void dfs(int x,int y){
	a[x][y]=0;
	for(int i=0;i<4;i++){
		int mx=x+m1[i],my=y+m2[i];
		if(mx<1||my<1||mx>n||my>n) continue;
		dfs(mx,my);
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
			if(a[i][j]==0) a[i][j]=2;
		}
	for(int i=1;i<=n;i++){
			if(a[i][1]==2) dfs(i,1);
			if(a[1][i]==2) dfs(1,i);
			if(a[i][n]==2) dfs(i,n);
			if(a[n][i]==2) dfs(n,i);
		}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
			cout<<a[i][j]<<" ";
		cout<<endl;
	}
	return 0;
}
2020/11/6 20:03
加载中...