喵喵喵站外题求调 bfs
  • 板块灌水区
  • 楼主Furukawa_Nagisa
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/4/18 22:52
  • 上次更新2024/4/19 14:42:52
查看原帖
喵喵喵站外题求调 bfs
1043012
Furukawa_Nagisa楼主2024/4/18 22:52

0分喵喵喵

代码


#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,s[2500][2500],vis[160000],c[2500][2500],ans[2500][2500],root,sum;
queue<int>v1;queue<int>v2;
int d[4][2]={{0,1},{0,-1},{-1,0},{1,0}};
void bfs(int a,int b){
	v1.push(a);v2.push(b);ans[a][b]=0;vis[s[a][b]]=1;
	while(!v1.empty()){
		for(int i=0;i<4;i++){
		int na,nb;
		na=v1.front()+d[i][0];nb=v2.front()+d[i][1];
		if(!vis[s[na][nb]] && na>=1 && na<=n && nb>=1 && nb<=m){
		v1.push(na);v2.push(nb);vis[s[na][nb]]=1;
		if(c[na][nb]!=c[v1.front()][v2.front()])ans[na][nb]=ans[v1.front()][v2.front()]+1;
		else ans[na][nb]=ans[v1.front()][v2.front()];
		}
	}
	v1.pop(),v2.pop();
	}
	
}
int main(){
	cin>>n>>m>>x>>y;int cnt=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			int cou;
			cin>>cou;
			c[i][j]=cou;
			s[i][j]=cnt;cnt++;
		}
		
	}
	memset(ans,0,sizeof(ans));
	bfs(x,y);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
		cout<<ans[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}

悬关喵喵喵

2024/4/18 22:52
加载中...